]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Add support for negated test expressions
authorKevin <kevin@kevin-brown.com>
Tue, 12 May 2020 02:27:38 +0000 (22:27 -0400)
committerKevin <kevin@kevin-brown.com>
Tue, 12 May 2020 02:27:38 +0000 (22:27 -0400)
grammar.ebnf
new_parser.py

index ca6a19923ebdb90b5ac6e90d6f5e914346a08b8b..4933af720f8e328d5117eceabe91e96b3c6641a8 100644 (file)
@@ -280,7 +280,9 @@ conditional_expression_operator_in
 conditional_expression_test\r
     =\r
     test_variable:variable_identifier\r
-    {SP}* "is" {SP}*\r
+    {SP}* "is"\r
+    [ {SP}+ "not" {SP} negated:`True` ]\r
+    {SP}*\r
     test_function:variable_identifier\r
     [\r
         {SP}*\r
index dddae2ba039ae9d46bc1ad42c3b22f78e8738a17..a14000d7df82d59a5585acb9350f3e2cdfba3284 100644 (file)
@@ -391,7 +391,7 @@ def parse_conditional_expression_test(ast):
             parse_variable(ast['test_function_parameter'])\r
         ]\r
 \r
-    return nodes.Test(\r
+    test_node = nodes.Test(\r
         node,\r
         name,\r
         args,\r
@@ -401,6 +401,14 @@ def parse_conditional_expression_test(ast):
         lineno=lineno_from_parseinfo(ast['parseinfo'])\r
     )\r
 \r
+    if 'negated' in ast and ast['negated']:\r
+        test_node = nodes.Not(\r
+            test_node,\r
+            lineno=lineno_from_parseinfo(ast['parseinfo'])\r
+        )\r
+\r
+    return test_node\r
+\r
 def parse_literal(ast):\r
     if 'literal_type' not in ast:\r
         raise\r