diff options
-rw-r--r-- | askama/src/parser.rs | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/askama/src/parser.rs b/askama/src/parser.rs index 5f14482..2654c9b 100644 --- a/askama/src/parser.rs +++ b/askama/src/parser.rs @@ -105,22 +105,23 @@ fn expr_filtered(i: &[u8]) -> IResult<&[u8], Expr> { IResult::Done(left, expr) } -named!(expr_compare<Expr>, do_parse!( - left: expr_filtered >> - op: ws!(alt!( - tag_s!("==") | tag_s!("!=") | - tag_s!(">=") | tag_s!(">") | - tag_s!("<=") | tag_s!("<") - )) >> - right: expr_filtered >> - (Expr::BinOp(str::from_utf8(op).unwrap(), - Box::new(left), Box::new(right))) +named!(expr_single<Expr>, alt!( + expr_filtered | + expr_str_lit )); named!(expr_any<Expr>, alt!( - expr_compare | - expr_filtered | - expr_str_lit + do_parse!( + left: expr_single >> + op: ws!(alt!( + tag_s!("==") | tag_s!("!=") | + tag_s!(">=") | tag_s!(">") | + tag_s!("<=") | tag_s!("<") + )) >> + right: expr_single >> + (Expr::BinOp(str::from_utf8(op).unwrap(), + Box::new(left), Box::new(right))) + ) | expr_single )); named!(expr_node<Node>, do_parse!( |