diff options
Diffstat (limited to 'src/model')
-rw-r--r-- | src/model/event.rs | 39 | ||||
-rw-r--r-- | src/model/mod.rs | 1 |
2 files changed, 40 insertions, 0 deletions
diff --git a/src/model/event.rs b/src/model/event.rs new file mode 100644 index 0000000..d1d9775 --- /dev/null +++ b/src/model/event.rs @@ -0,0 +1,39 @@ +use chrono::Timelike; +use chrono::{NaiveDate, NaiveTime}; + +#[derive(Debug, Clone)] +pub struct Event { + pub date: NaiveDate, + pub time: Time, + pub name: String, +} + +impl Event { + pub fn pprint(&self) -> String { + match self.time { + Time::AllDay => self.name.clone(), + Time::Time { start, end: None } => format!("{} {}", pprint_time(start), self.name), + Time::Time { + start, + end: Some(e), + } => format!("{}-{} {}", pprint_time(start), pprint_time(e), self.name), + } + } +} + +#[derive(Debug, Clone, Copy, PartialOrd, PartialEq, Eq, Ord)] +pub enum Time { + AllDay, + Time { + start: NaiveTime, + end: Option<NaiveTime>, + }, +} + +fn pprint_time(t: NaiveTime) -> String { + if t.minute() == 0 { + format!("{}h", t.hour()) + } else { + format!("{}h{}", t.hour(), t.minute()) + } +} diff --git a/src/model/mod.rs b/src/model/mod.rs new file mode 100644 index 0000000..53f1126 --- /dev/null +++ b/src/model/mod.rs @@ -0,0 +1 @@ +pub mod event; |