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))
|
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 {
|
fn parse_title(p: Pair<Rule>) -> String {
|
||||||
assert_eq!(p.as_rule(), Rule::title);
|
assert_eq!(p.as_rule(), Rule::title);
|
||||||
let p = p.into_inner().next().unwrap();
|
let p = p.into_inner().next().unwrap();
|
||||||
|
|
@ -112,7 +117,7 @@ fn parse_amount(p: Pair<Rule>) -> Amount {
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
Rule::amount_value => value = p.as_str().parse().unwrap(),
|
Rule::number => value = parse_number(p),
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -270,11 +275,6 @@ fn parse_date_fixed(p: Pair<Rule>) -> Result<DateSpec> {
|
||||||
Ok(spec)
|
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 {
|
fn parse_boolean(p: Pair<Rule>) -> bool {
|
||||||
assert_eq!(p.as_rule(), Rule::boolean);
|
assert_eq!(p.as_rule(), Rule::boolean);
|
||||||
match p.as_str() {
|
match p.as_str() {
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ WHITESPACE = _{ !eol ~ WHITE_SPACE }
|
||||||
rest_some = { (!eol ~ ANY)+ }
|
rest_some = { (!eol ~ ANY)+ }
|
||||||
rest_any = { (!eol ~ ANY)* }
|
rest_any = { (!eol ~ ANY)* }
|
||||||
|
|
||||||
|
number = @{ ASCII_DIGIT{1,9} } // Fits into an i32
|
||||||
|
|
||||||
title = { WHITESPACE ~ rest_some ~ eol }
|
title = { WHITESPACE ~ rest_some ~ eol }
|
||||||
|
|
||||||
year = @{ ASCII_DIGIT{4} }
|
year = @{ ASCII_DIGIT{4} }
|
||||||
|
|
@ -18,8 +20,7 @@ time = ${ hour ~ ":" ~ minute }
|
||||||
weekday = { "mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun" }
|
weekday = { "mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun" }
|
||||||
|
|
||||||
amount_sign = { "+" | "-" }
|
amount_sign = { "+" | "-" }
|
||||||
amount_value = @{ ASCII_DIGIT{1,9} } // Fits into an i32
|
amount = { amount_sign? ~ number? }
|
||||||
amount = { amount_sign? ~ amount_value? }
|
|
||||||
delta_weekdays = { amount ~ weekday }
|
delta_weekdays = { amount ~ weekday }
|
||||||
delta_minutes = { amount ~ "min" }
|
delta_minutes = { amount ~ "min" }
|
||||||
delta_years = { amount ~ "y" }
|
delta_years = { amount ~ "y" }
|
||||||
|
|
@ -41,7 +42,6 @@ delta = {
|
||||||
)+
|
)+
|
||||||
}
|
}
|
||||||
|
|
||||||
number = @{ ("+" | "-")? ~ ASCII_DIGIT{1,9} } // Fits into an i32
|
|
||||||
boolean = { "true" | "false" }
|
boolean = { "true" | "false" }
|
||||||
variable = {
|
variable = {
|
||||||
"mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun"
|
"mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue