aboutsummaryrefslogtreecommitdiffstats
path: root/askama_parser
diff options
context:
space:
mode:
authorLibravatar René Kijewski <kijewski@library.vetmed.fu-berlin.de>2023-07-21 14:35:35 +0200
committerLibravatar René Kijewski <Kijewski@users.noreply.github.com>2023-08-03 00:02:04 +0200
commitd4fbad1db221e780586d1849720e5bb6d70e982c (patch)
tree9f43c5f513d2b2b9240bdf3bf4d4ebb96749af5a /askama_parser
parent95ff27c087f9fd77e76ed069220d7b32d150a84e (diff)
downloadaskama-d4fbad1db221e780586d1849720e5bb6d70e982c.tar.gz
askama-d4fbad1db221e780586d1849720e5bb6d70e982c.tar.bz2
askama-d4fbad1db221e780586d1849720e5bb6d70e982c.zip
Optimize parsing boolean literals, too
Diffstat (limited to 'askama_parser')
-rw-r--r--askama_parser/src/expr.rs14
1 files changed, 5 insertions, 9 deletions
diff --git a/askama_parser/src/expr.rs b/askama_parser/src/expr.rs
index 248bc19..ca1dc9b 100644
--- a/askama_parser/src/expr.rs
+++ b/askama_parser/src/expr.rs
@@ -10,8 +10,7 @@ use nom::sequence::{pair, preceded, terminated, tuple};
use nom::{error_position, IResult};
use super::{
- bool_lit, char_lit, identifier, not_ws, num_lit, path_or_identifier, str_lit, ws,
- PathOrIdentifier,
+ char_lit, identifier, not_ws, num_lit, path_or_identifier, str_lit, ws, PathOrIdentifier,
};
macro_rules! expr_prec_layer {
@@ -140,11 +139,10 @@ impl<'a> Expr<'a> {
fn single(i: &'a str) -> IResult<&'a str, Self> {
alt((
- Self::bool,
Self::num,
Self::str,
Self::char,
- Self::path_or_var,
+ Self::path_var_bool,
Self::array,
Self::group,
))(i)
@@ -188,9 +186,11 @@ impl<'a> Expr<'a> {
)(i)
}
- fn path_or_var(i: &'a str) -> IResult<&'a str, Self> {
+ fn path_var_bool(i: &'a str) -> IResult<&'a str, Self> {
map(path_or_identifier, |v| match v {
PathOrIdentifier::Path(v) => Self::Path(v),
+ PathOrIdentifier::Identifier(v @ "true") => Self::BoolLit(v),
+ PathOrIdentifier::Identifier(v @ "false") => Self::BoolLit(v),
PathOrIdentifier::Identifier(v) => Self::Var(v),
})(i)
}
@@ -206,10 +206,6 @@ impl<'a> Expr<'a> {
fn char(i: &'a str) -> IResult<&'a str, Self> {
map(char_lit, Self::CharLit)(i)
}
-
- fn bool(i: &'a str) -> IResult<&'a str, Self> {
- map(bool_lit, Self::BoolLit)(i)
- }
}
enum Suffix<'a> {