diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..e5b3063 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "yaml.customTags": [ + "!DayOfWeek sequence", + "!TimeOfDay mapping", + "!Unavailable mapping", + "!None", + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 91c2772..b238dce 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ will cover on-call (if you have part time employees, or people whose situations shiftLength: 1 # A new shift starts every day constraints: - !DayOfWeek [Mon, Tue, Wed, Thu, Fri] # Shifts cover weekdays only - - !TimeRange # And run from 08:00 to 16:00 on those days + - !TimeOfDay # And run from 08:00 to 16:00 on those days start: 08:00:00 end: 16:00:00 humans: diff --git a/examples/3-day.yaml b/examples/3-day.yaml index d525ee0..a0d1ecd 100644 --- a/examples/3-day.yaml +++ b/examples/3-day.yaml @@ -1,7 +1,7 @@ shiftLength: 3 constraints: - !DayOfWeek [Mon, Tue, Wed, Thu, Fri] - - !TimeRange + - !TimeOfDay start: 08:00:00 end: 16:00:00 humans: diff --git a/examples/rotation.yaml b/examples/rotation.yaml index bbee7bd..3ea4d75 100644 --- a/examples/rotation.yaml +++ b/examples/rotation.yaml @@ -1,7 +1,7 @@ shiftLength: 1 constraints: - !DayOfWeek [Mon, Tue, Wed, Thu, Fri] - - !TimeRange + - !TimeOfDay start: 08:00:00 end: 16:00:00 humans: diff --git a/examples/weekly.yaml b/examples/weekly.yaml index aa7457a..6a3f136 100644 --- a/examples/weekly.yaml +++ b/examples/weekly.yaml @@ -1,7 +1,7 @@ shiftLength: 5 constraints: - !DayOfWeek [Mon, Tue, Wed, Thu, Fri] - - !TimeRange + - !TimeOfDay start: 08:00:00 end: 16:00:00 humans: diff --git a/src/config.rs b/src/config.rs index 40068c4..7c7dc81 100644 --- a/src/config.rs +++ b/src/config.rs @@ -252,7 +252,7 @@ mod tests { shiftLength: 1 constraints: - !DayOfWeek [Mon, Tue, Wed, Thu, Fri] - - !TimeRange + - !TimeOfDay start: 08:00:00 end: 16:00:00 humans: diff --git a/src/constraints/mod.rs b/src/constraints/mod.rs index 9ef6e3b..959d156 100644 --- a/src/constraints/mod.rs +++ b/src/constraints/mod.rs @@ -14,7 +14,7 @@ mod unavailable; pub enum Constraint { None, DayOfWeek(Vec), - TimeRange { start: NaiveTime, end: NaiveTime }, + TimeOfDay { start: NaiveTime, end: NaiveTime }, Unavailable { start: NaiveDate, end: NaiveDate }, } @@ -28,7 +28,7 @@ impl Constraint { Constraint::DayOfWeek(days) => { Box::new(dayofweek::DayOfWeekIterator::new(ranges, days.clone())) } - Constraint::TimeRange { start, end } => { + Constraint::TimeOfDay { start, end } => { Box::new(timeofday::TimeOfDayIterator::new(ranges, *start, *end)) } Constraint::Unavailable { start, end } => { @@ -45,7 +45,7 @@ impl Display for Constraint { Constraint::DayOfWeek(days) => { write!(f, "available on {:?}", days) } - Constraint::TimeRange { start, end } => { + Constraint::TimeOfDay { start, end } => { write!(f, "available between {} and {}", start, end) } Constraint::Unavailable { start, end } => { @@ -61,7 +61,7 @@ mod tests { #[test] fn test_time_of_day_constraint() { - let constraint = Constraint::TimeRange { + let constraint = Constraint::TimeOfDay { start: NaiveTime::from_hms_opt(9, 0, 0).unwrap(), end: NaiveTime::from_hms_opt(17, 0, 0).unwrap(), }; diff --git a/src/solver.rs b/src/solver.rs index 89c0b7f..865e28e 100644 --- a/src/solver.rs +++ b/src/solver.rs @@ -159,7 +159,7 @@ mod tests { chrono::Weekday::Thu, chrono::Weekday::Fri, ]), - Constraint::TimeRange { + Constraint::TimeOfDay { start: NaiveTime::from_hms_opt(9, 0, 0).unwrap(), end: NaiveTime::from_hms_opt(17, 0, 0).unwrap(), },