Split up DATE parsing
This commit is contained in:
parent
d006f03df3
commit
d298ffabb2
1 changed files with 28 additions and 2 deletions
30
src/parse.rs
30
src/parse.rs
|
|
@ -6,7 +6,9 @@ use pest::error::{Error, ErrorVariant};
|
||||||
use pest::iterators::Pair;
|
use pest::iterators::Pair;
|
||||||
use pest::{Parser, Span};
|
use pest::{Parser, Span};
|
||||||
|
|
||||||
use crate::commands::{Birthday, BirthdaySpec, Command, Done, Note, Spec, Task};
|
use crate::commands::{
|
||||||
|
Birthday, BirthdaySpec, Command, DateSpec, Done, FormulaSpec, Note, Spec, Task, WeekdaySpec,
|
||||||
|
};
|
||||||
|
|
||||||
#[derive(pest_derive::Parser)]
|
#[derive(pest_derive::Parser)]
|
||||||
#[grammar = "parse/todayfile.pest"]
|
#[grammar = "parse/todayfile.pest"]
|
||||||
|
|
@ -63,11 +65,35 @@ fn parse_time(p: Pair<Rule>) -> Result<NaiveTime> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_date(p: Pair<Rule>) -> Result<Spec> {
|
fn parse_date_fixed(p: Pair<Rule>) -> Result<DateSpec> {
|
||||||
|
assert_eq!(p.as_rule(), Rule::date_fixed);
|
||||||
dbg!(p);
|
dbg!(p);
|
||||||
todo!()
|
todo!()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn parse_date_expr(p: Pair<Rule>) -> Result<FormulaSpec> {
|
||||||
|
assert_eq!(p.as_rule(), Rule::date_expr);
|
||||||
|
dbg!(p);
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse_date_weekday(p: Pair<Rule>) -> Result<WeekdaySpec> {
|
||||||
|
assert_eq!(p.as_rule(), Rule::date_weekday);
|
||||||
|
dbg!(p);
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse_date(p: Pair<Rule>) -> Result<Spec> {
|
||||||
|
assert_eq!(p.as_rule(), Rule::date);
|
||||||
|
let p = p.into_inner().next().unwrap();
|
||||||
|
match p.as_rule() {
|
||||||
|
Rule::date_fixed => parse_date_fixed(p).map(Spec::Date),
|
||||||
|
Rule::date_expr => parse_date_expr(p).map(Spec::Formula),
|
||||||
|
Rule::date_weekday => parse_date_weekday(p).map(Spec::Weekday),
|
||||||
|
_ => unreachable!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn parse_from(p: Pair<Rule>) -> Result<NaiveDate> {
|
fn parse_from(p: Pair<Rule>) -> Result<NaiveDate> {
|
||||||
assert_eq!(p.as_rule(), Rule::from);
|
assert_eq!(p.as_rule(), Rule::from);
|
||||||
parse_datum(p.into_inner().next().unwrap())
|
parse_datum(p.into_inner().next().unwrap())
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue