From 1d80ab681eb967a5a3835f492161c39cfc8fb1b8 Mon Sep 17 00:00:00 2001 From: Joscha Date: Fri, 26 Nov 2021 00:53:27 +0100 Subject: [PATCH] Add eval representation of DateSpec --- src/eval.rs | 22 ++------------ src/eval/date_spec.rs | 62 ++++++++++++++++++++++++++++++++++++++++ src/eval/formula_spec.rs | 14 ++++++++- 3 files changed, 77 insertions(+), 21 deletions(-) create mode 100644 src/eval/date_spec.rs diff --git a/src/eval.rs b/src/eval.rs index 8ad87fa..3186447 100644 --- a/src/eval.rs +++ b/src/eval.rs @@ -3,15 +3,14 @@ use std::result; use chrono::{Datelike, NaiveDate}; -use crate::files::commands::DateSpec; use crate::files::commands::{Birthday, Command, DoneDate, Note, Spec, Task}; use crate::files::{Files, Source, SourcedCommand}; use self::entry::EntryMap; pub use self::entry::{Entry, EntryKind}; -use self::formula_spec::FormulaSpec; pub use self::range::DateRange; +mod date_spec; mod delta; mod entry; mod formula_spec; @@ -31,23 +30,6 @@ struct Eval { } impl Eval { - fn eval_date_spec( - &mut self, - spec: &DateSpec, - last_done: Option, - new_entry: impl Fn(Source, Option) -> Entry, - ) -> Result<()> { - todo!() - } - - fn eval_formula_spec( - &mut self, - spec: FormulaSpec, - new_entry: impl Fn(Source, Option) -> Entry, - ) -> Result<()> { - todo!() - } - fn eval_spec( &mut self, spec: &Spec, @@ -55,7 +37,7 @@ impl Eval { new_entry: impl Fn(Source, Option) -> Entry, ) -> Result<()> { match spec { - Spec::Date(spec) => self.eval_date_spec(spec, last_done, new_entry), + Spec::Date(spec) => self.eval_date_spec(spec.into(), last_done, new_entry), Spec::Weekday(spec) => self.eval_formula_spec(spec.into(), new_entry), Spec::Formula(spec) => self.eval_formula_spec(spec.into(), new_entry), } diff --git a/src/eval/date_spec.rs b/src/eval/date_spec.rs new file mode 100644 index 0000000..db8871d --- /dev/null +++ b/src/eval/date_spec.rs @@ -0,0 +1,62 @@ +use chrono::NaiveDate; + +use crate::files::commands::{self, DoneDate, Time}; +use crate::files::Source; + +use super::delta::{Delta, DeltaStep}; +use super::{Entry, Eval, Result}; + +pub struct DateSpec { + pub start: NaiveDate, + pub start_delta: Delta, + pub start_time: Option