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,
|
from: NaiveDate,
|
||||||
to: NaiveDate,
|
to: NaiveDate,
|
||||||
},
|
},
|
||||||
|
Remind(Option<Spanned<Delta>>),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
|
|
|
||||||
|
|
@ -221,6 +221,8 @@ impl fmt::Display for Statement {
|
||||||
Statement::Until(None) => writeln!(f, "UNTIL *"),
|
Statement::Until(None) => writeln!(f, "UNTIL *"),
|
||||||
Statement::Except(date) => writeln!(f, "EXCEPT {}", date),
|
Statement::Except(date) => writeln!(f, "EXCEPT {}", date),
|
||||||
Statement::Move { from, to, .. } => writeln!(f, "MOVE {} TO {}", from, to),
|
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_until = !{ "UNTIL" ~ (datum | "*") ~ eol }
|
||||||
stmt_except = !{ "EXCEPT" ~ datum ~ eol }
|
stmt_except = !{ "EXCEPT" ~ datum ~ eol }
|
||||||
stmt_move = !{ "MOVE" ~ datum ~ "TO" ~ 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 = {
|
donedate = {
|
||||||
datum ~ time ~ "--" ~ datum ~ time
|
datum ~ time ~ "--" ~ datum ~ time
|
||||||
|
|
|
||||||
|
|
@ -623,6 +623,17 @@ fn parse_stmt_move(p: Pair<'_, Rule>) -> Result<Statement> {
|
||||||
Ok(Statement::Move { span, from, to })
|
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>> {
|
fn parse_statements(p: Pair<'_, Rule>, task: bool) -> Result<Vec<Statement>> {
|
||||||
assert_eq!(p.as_rule(), Rule::statements);
|
assert_eq!(p.as_rule(), Rule::statements);
|
||||||
let mut statements = vec![];
|
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_until => parse_stmt_until(p)?,
|
||||||
Rule::stmt_except => parse_stmt_except(p)?,
|
Rule::stmt_except => parse_stmt_except(p)?,
|
||||||
Rule::stmt_move => parse_stmt_move(p)?,
|
Rule::stmt_move => parse_stmt_move(p)?,
|
||||||
|
Rule::stmt_remind => parse_stmt_remind(p)?,
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue