Parse REMINDs
This commit is contained in:
parent
03e98bbe72
commit
fe22c66c5c
4 changed files with 17 additions and 1 deletions
|
|
@ -267,6 +267,7 @@ pub enum Statement {
|
|||
from: NaiveDate,
|
||||
to: NaiveDate,
|
||||
},
|
||||
Remind(Option<Spanned<Delta>>),
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
|
|
|
|||
|
|
@ -221,6 +221,8 @@ impl fmt::Display for Statement {
|
|||
Statement::Until(None) => writeln!(f, "UNTIL *"),
|
||||
Statement::Except(date) => writeln!(f, "EXCEPT {}", date),
|
||||
Statement::Move { from, to, .. } => writeln!(f, "MOVE {} TO {}", from, to),
|
||||
Statement::Remind(Some(delta)) => writeln!(f, "REMIND {}", delta),
|
||||
Statement::Remind(None) => writeln!(f, "REMIND *"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -107,8 +107,9 @@ stmt_from = !{ "FROM" ~ (datum | "*") ~ eol }
|
|||
stmt_until = !{ "UNTIL" ~ (datum | "*") ~ eol }
|
||||
stmt_except = !{ "EXCEPT" ~ datum ~ eol }
|
||||
stmt_move = !{ "MOVE" ~ datum ~ "TO" ~ datum ~ eol }
|
||||
stmt_remind = !{ "REMIND" ~ (delta | "*") ~ eol }
|
||||
|
||||
statements = { (stmt_date | stmt_bdate | stmt_from | stmt_until | stmt_except | stmt_move)* }
|
||||
statements = { (stmt_date | stmt_bdate | stmt_from | stmt_until | stmt_except | stmt_move | stmt_remind)* }
|
||||
|
||||
donedate = {
|
||||
datum ~ time ~ "--" ~ datum ~ time
|
||||
|
|
|
|||
|
|
@ -623,6 +623,17 @@ fn parse_stmt_move(p: Pair<'_, Rule>) -> Result<Statement> {
|
|||
Ok(Statement::Move { span, from, to })
|
||||
}
|
||||
|
||||
fn parse_stmt_remind(p: Pair<'_, Rule>) -> Result<Statement> {
|
||||
assert_eq!(p.as_rule(), Rule::stmt_remind);
|
||||
let mut p = p.into_inner();
|
||||
let delta = match p.next() {
|
||||
Some(p) => Some(parse_delta(p)?),
|
||||
None => None,
|
||||
};
|
||||
assert_eq!(p.next(), None);
|
||||
Ok(Statement::Remind(delta))
|
||||
}
|
||||
|
||||
fn parse_statements(p: Pair<'_, Rule>, task: bool) -> Result<Vec<Statement>> {
|
||||
assert_eq!(p.as_rule(), Rule::statements);
|
||||
let mut statements = vec![];
|
||||
|
|
@ -635,6 +646,7 @@ fn parse_statements(p: Pair<'_, Rule>, task: bool) -> Result<Vec<Statement>> {
|
|||
Rule::stmt_until => parse_stmt_until(p)?,
|
||||
Rule::stmt_except => parse_stmt_except(p)?,
|
||||
Rule::stmt_move => parse_stmt_move(p)?,
|
||||
Rule::stmt_remind => parse_stmt_remind(p)?,
|
||||
_ => unreachable!(),
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue