Unify number parsing again
This commit is contained in:
parent
7ed4ba2372
commit
e9cff194d3
2 changed files with 9 additions and 9 deletions
12
src/parse.rs
12
src/parse.rs
|
|
@ -31,6 +31,11 @@ fn fail<S: Into<String>, T>(span: Span, message: S) -> Result<T> {
|
|||
Err(error(span, message))
|
||||
}
|
||||
|
||||
fn parse_number(p: Pair<Rule>) -> i32 {
|
||||
assert_eq!(p.as_rule(), Rule::number);
|
||||
p.as_str().parse().unwrap()
|
||||
}
|
||||
|
||||
fn parse_title(p: Pair<Rule>) -> String {
|
||||
assert_eq!(p.as_rule(), Rule::title);
|
||||
let p = p.into_inner().next().unwrap();
|
||||
|
|
@ -112,7 +117,7 @@ fn parse_amount(p: Pair<Rule>) -> Amount {
|
|||
_ => unreachable!(),
|
||||
})
|
||||
}
|
||||
Rule::amount_value => value = p.as_str().parse().unwrap(),
|
||||
Rule::number => value = parse_number(p),
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
|
@ -270,11 +275,6 @@ fn parse_date_fixed(p: Pair<Rule>) -> Result<DateSpec> {
|
|||
Ok(spec)
|
||||
}
|
||||
|
||||
fn parse_number(p: Pair<Rule>) -> i32 {
|
||||
assert_eq!(p.as_rule(), Rule::number);
|
||||
p.as_str().parse().unwrap()
|
||||
}
|
||||
|
||||
fn parse_boolean(p: Pair<Rule>) -> bool {
|
||||
assert_eq!(p.as_rule(), Rule::boolean);
|
||||
match p.as_str() {
|
||||
|
|
|
|||
|
|
@ -3,6 +3,8 @@ WHITESPACE = _{ !eol ~ WHITE_SPACE }
|
|||
rest_some = { (!eol ~ ANY)+ }
|
||||
rest_any = { (!eol ~ ANY)* }
|
||||
|
||||
number = @{ ASCII_DIGIT{1,9} } // Fits into an i32
|
||||
|
||||
title = { WHITESPACE ~ rest_some ~ eol }
|
||||
|
||||
year = @{ ASCII_DIGIT{4} }
|
||||
|
|
@ -18,8 +20,7 @@ time = ${ hour ~ ":" ~ minute }
|
|||
weekday = { "mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun" }
|
||||
|
||||
amount_sign = { "+" | "-" }
|
||||
amount_value = @{ ASCII_DIGIT{1,9} } // Fits into an i32
|
||||
amount = { amount_sign? ~ amount_value? }
|
||||
amount = { amount_sign? ~ number? }
|
||||
delta_weekdays = { amount ~ weekday }
|
||||
delta_minutes = { amount ~ "min" }
|
||||
delta_years = { amount ~ "y" }
|
||||
|
|
@ -41,7 +42,6 @@ delta = {
|
|||
)+
|
||||
}
|
||||
|
||||
number = @{ ("+" | "-")? ~ ASCII_DIGIT{1,9} } // Fits into an i32
|
||||
boolean = { "true" | "false" }
|
||||
variable = {
|
||||
"mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue