aboutsummaryrefslogtreecommitdiffstats
path: root/askama_parser
diff options
context:
space:
mode:
Diffstat (limited to 'askama_parser')
-rw-r--r--askama_parser/src/expr.rs8
-rw-r--r--askama_parser/src/tests.rs27
2 files changed, 31 insertions, 4 deletions
diff --git a/askama_parser/src/expr.rs b/askama_parser/src/expr.rs
index ef5c5e2..ab7caff 100644
--- a/askama_parser/src/expr.rs
+++ b/askama_parser/src/expr.rs
@@ -68,10 +68,12 @@ pub enum Expr<'a> {
impl<'a> Expr<'a> {
pub(super) fn arguments(i: &'a str) -> IResult<&'a str, Vec<Self>> {
- delimited(
+ preceded(
ws(char('(')),
- separated_list0(char(','), ws(Self::parse)),
- ws(char(')')),
+ cut(terminated(
+ separated_list0(char(','), ws(Self::parse)),
+ char(')'),
+ )),
)(i)
}
diff --git a/askama_parser/src/tests.rs b/askama_parser/src/tests.rs
index 5b3b66e..2beeb38 100644
--- a/askama_parser/src/tests.rs
+++ b/askama_parser/src/tests.rs
@@ -493,9 +493,34 @@ fn test_odd_calls() {
Ast::from_str("{{ -a(b) }}", &syntax).unwrap().nodes,
vec![Node::Expr(
Ws(None, None),
- Unary("-", Box::new(Call(Box::new(Var("a")), vec![Var("b")])),),
+ Unary("-", Box::new(Call(Box::new(Var("a")), vec![Var("b")]))),
)],
);
+ assert_eq!(
+ Ast::from_str("{{ a(b)|c }}", &syntax).unwrap().nodes,
+ vec![Node::Expr(
+ Ws(None, None),
+ Filter("c", vec![Call(Box::new(Var("a")), vec![Var("b")])]),
+ )]
+ );
+ assert_eq!(
+ Ast::from_str("{{ a(b)| c }}", &syntax).unwrap().nodes,
+ vec![Node::Expr(
+ Ws(None, None),
+ Filter("c", vec![Call(Box::new(Var("a")), vec![Var("b")])]),
+ )]
+ );
+ assert_eq!(
+ Ast::from_str("{{ a(b) |c }}", &syntax).unwrap().nodes,
+ vec![Node::Expr(
+ Ws(None, None),
+ BinOp(
+ "|",
+ Box::new(Call(Box::new(Var("a")), vec![Var("b")])),
+ Box::new(Var("c"))
+ ),
+ )]
+ );
}
#[test]