'From the Twig test suite, https://github.com/fabpot/Twig, available under BSD license.\n\n--TEST--\nException for an unclosed tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n\n\n\n ' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'i' Name.Variable ' ' Text 'in' Keyword ' ' Text 'fo' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n\n\n ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n\n\n\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--EXCEPTION--\nTwig_Error_Syntax: Unexpected tag name "endblock" (expecting closing tag for the "if" tag defined near line 4) in "index.twig" at line 16\n--TEST--\nException for an undefined trait\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text "'foo'" Literal.String.Single ' ' Text 'with' Name.Variable ' ' Text 'foobar' Name.Variable ' ' Text 'as' Name.Variable ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--EXCEPTION--\nTwig_Error_Runtime: Block "foobar" is not defined in trait "foo" in "index.twig".\n--TEST--\nTwig supports method calls\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '.foo' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '[' Operator "'foo'" Literal.String.Single ']' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '[' Operator 'foo' Name.Variable ']' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '[' Operator 'items' Name.Variable '[' Operator 'foo' Name.Variable ']' Operator ']' Operator ' ' Text '}}' Comment.Preproc "\n--DATA--\nreturn array('foo' => 'bar', 'items' => array('foo' => 'bar', 'bar' => 'foo'))\n--EXPECT--\nbar\nbar\nfoo\nbar\n--TEST--\nTwig supports array notation\n--TEMPLATE--\n" Other '{# empty array #}' Comment '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator ']' Operator '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text '[' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ']' Operator '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator "'foo'" Literal.String.Single ',' Operator ' ' Text '"bar"' Literal.String.Double ']' Operator '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator '0' Literal.Number ':' Operator ' ' Text '1' Literal.Number ',' Operator ' ' Text "'foo'" Literal.String.Single ':' Operator ' ' Text "'bar'" Literal.String.Single '}' Operator '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator '0' Literal.Number ':' Operator ' ' Text '1' Literal.Number ',' Operator ' ' Text "'foo'" Literal.String.Single ':' Operator ' ' Text "'bar'" Literal.String.Single '}' Operator '|' Operator 'keys' Name.Function '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text '{' Operator '0' Literal.Number ':' Operator ' ' Text '1' Literal.Number ',' Operator ' ' Text 'foo' Name.Variable ':' Operator ' ' Text "'bar'" Literal.String.Single '}' Operator '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator '0' Literal.Number ':' Operator ' ' Text '1' Literal.Number ',' Operator ' ' Text 'foo' Name.Variable ':' Operator ' ' Text "'bar'" Literal.String.Single '}' Operator '|' Operator 'keys' Name.Function '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{# nested arrays #}' Comment '\n' Other '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'a' Name.Variable ' ' Text '=' Operator ' ' Text '[' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text '[' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ']' Operator ',' Operator ' ' Text '{' Operator "'foo'" Literal.String.Single ':' Operator ' ' Text '{' Operator "'foo'" Literal.String.Single ':' Operator ' ' Text "'bar'" Literal.String.Single '}' Operator '}' Operator ']' Operator ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'a' Name.Variable '[' Operator '2' Literal.Number ']' Operator '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'a' Name.Variable '[' Operator '3' Literal.Number ']' Operator '[' Operator '"foo"' Literal.String.Double ']' Operator '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{# works even if [] is used inside the array #}' Comment '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator 'foo' Name.Variable '[' Operator 'bar' Name.Variable ']' Operator ']' Operator '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{# elements can be any expression #}' Comment '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator "'foo'" Literal.String.Single '|' Operator 'upper' Name.Function ',' Operator ' ' Text 'bar' Name.Variable '|' Operator 'upper' Name.Function ',' Operator ' ' Text 'bar' Name.Variable ' ' Text '==' Operator ' ' Text 'foo' Name.Variable ']' Operator '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{# arrays can have a trailing , like in PHP #}' Comment '\n' Other '{{' Comment.Preproc '\n ' Text '[' Operator '\n ' Text '1' Literal.Number ',' Operator '\n ' Text '2' Literal.Number ',' Operator '\n ' Text ']' Operator '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator '\n' Text '}}' Comment.Preproc '\n\n' Other '{# keys can be any expression #}' Comment '\n' Other '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'a' Name.Variable ' ' Text '=' Operator ' ' Text '1' Literal.Number ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'b' Name.Variable ' ' Text '=' Operator ' ' Text '"foo"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'ary' Name.Variable ' ' Text '=' Operator ' ' Text '{' Operator ' ' Text '(' Operator 'a' Name.Variable ')' Operator ':' Operator ' ' Text "'a'" Literal.String.Single ',' Operator ' ' Text '(' Operator 'b' Name.Variable ')' Operator ':' Operator ' ' Text "'b'" Literal.String.Single ',' Operator ' ' Text "'c'" Literal.String.Single ':' Operator ' ' Text "'c'" Literal.String.Single ',' Operator ' ' Text '(' Operator 'a' Name.Variable ' ' Text '~' Operator ' ' Text 'b' Name.Variable ')' Operator ':' Operator ' ' Text "'d'" Literal.String.Single ' ' Text '}' Operator ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'ary' Name.Variable '|' Operator 'keys' Name.Function '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'ary' Name.Variable '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc "\n--DATA--\nreturn array('bar' => 'bar', 'foo' => array('bar' => 'bar'))\n--EXPECT--\n1,2\nfoo,bar\n1,bar\n0,foo\n\n1,bar\n0,foo\n\n1,2\nbar\n\nbar\n\nFOO,BAR,\n\n1,2\n\n1,foo,c,1foo\na,b,c,d\n--TEST--\nTwig supports binary operations (+, -, *, /, ~, %, and, or)\n--TEMPLATE--\n" Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '+' Operator ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number ' ' Text '-' Operator ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number ' ' Text '*' Operator ' ' Text '2' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number ' ' Text '/' Operator ' ' Text '2' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '3' Literal.Number ' ' Text '%' Operator ' ' Text '2' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'and' Keyword ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'and' Keyword ' ' Text '0' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text 'and' Keyword ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text 'and' Keyword ' ' Text '0' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'or' Keyword ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'or' Keyword ' ' Text '0' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text 'or' Keyword ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text 'or' Keyword ' ' Text '0' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text 'or' Keyword ' ' Text '1' Literal.Number ' ' Text 'and' Keyword ' ' Text '0' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'or' Keyword ' ' Text '0' Literal.Number ' ' Text 'and' Keyword ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '"foo"' Literal.String.Double ' ' Text '~' Operator ' ' Text '"bar"' Literal.String.Double ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '~' Operator ' ' Text '"bar"' Literal.String.Double ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '"foo"' Literal.String.Double ' ' Text '~' Operator ' ' Text 'bar' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '~' Operator ' ' Text 'bar' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number '0' Literal.Number ' ' Text '/' Operator '/' Operator ' ' Text '7' Literal.Number ' ' Text '}}' Comment.Preproc "\n--DATA--\nreturn array('foo' => 'bar', 'bar' => 'foo')\n--EXPECT--\n2\n1\n4\n1\n1\n1\n\n\n\n1\n1\n1\n\n\n1\nfoobar\nbarbar\nfoofoo\nbarfoo\n2\n--TEST--\nTwig supports bitwise operations\n--TEMPLATE--\n" Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'b-and' Keyword ' ' Text '5' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'b-or' Keyword ' ' Text '5' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'b-xor' Keyword ' ' Text '5' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '(' Operator '1' Literal.Number ' ' Text 'and' Keyword ' ' Text '0' Literal.Number ' ' Text 'b-or' Keyword ' ' Text '0' Literal.Number ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator '1' Literal.Number ' ' Text 'and' Keyword ' ' Text '(' Operator '0' Literal.Number ' ' Text 'b-or' Keyword ' ' Text '0' Literal.Number ')' Operator ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n1\n5\n4\nok\n--TEST--\nTwig supports comparison operators (==, !=, <, >, >=, <=)\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '>' Operator ' ' Text '2' Literal.Number ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '>' Operator ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '>=' Operator ' ' Text '2' Literal.Number ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '>=' Operator ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '<' Operator ' ' Text '2' Literal.Number ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '<' Operator ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '<=' Operator ' ' Text '2' Literal.Number ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '<=' Operator ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '==' Operator ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '==' Operator ' ' Text '2' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '!=' Operator ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '!=' Operator ' ' Text '2' Literal.Number ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n///1\n1//1/1\n1/\n/1\n--TEST--\nTwig supports the "divisible by" operator\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '8' Literal.Number ' ' Text 'is' Keyword ' ' Text 'divisible' Name.Function ' ' Text 'by' Name.Variable '(' Operator '2' Literal.Number ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '8' Literal.Number ' ' Text 'is' Keyword ' ' Text 'not' Keyword ' ' Text 'divisible' Name.Function ' ' Text 'by' Name.Variable '(' Operator '3' Literal.Number ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '8' Literal.Number ' ' Text 'is' Keyword ' ' Text 'divisible' Name.Function ' ' Text 'by' Name.Variable ' ' Text '(' Operator '2' Literal.Number ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '8' Literal.Number ' ' Text 'is' Keyword ' ' Text 'not' Keyword '\n ' Text 'divisible' Name.Function '\n ' Text 'by' Name.Variable '\n ' Text '(' Operator '3' Literal.Number ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nOK\nOK\nOK\nOK\n--TEST--\nTwig supports the .. operator\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'i' Name.Variable ' ' Text 'in' Keyword ' ' Text '0.' Literal.Number '.10' Literal.Number ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'i' Name.Variable ' ' Text '}}' Comment.Preproc ' ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'letter' Name.Variable ' ' Text 'in' Keyword ' ' Text "'a'" Literal.String.Single '..' Operator "'z'" Literal.String.Single ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'letter' Name.Variable ' ' Text '}}' Comment.Preproc ' ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'letter' Name.Variable ' ' Text 'in' Keyword ' ' Text "'a'" Literal.String.Single '|' Operator 'upper' Name.Function '..' Operator "'z'" Literal.String.Single '|' Operator 'upper' Name.Function ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'letter' Name.Variable ' ' Text '}}' Comment.Preproc ' ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'i' Name.Variable ' ' Text 'in' Keyword ' ' Text 'foo' Name.Variable '[' Operator '0' Literal.Number ']' Operator '..' Operator 'foo' Name.Variable '[' Operator '1' Literal.Number ']' Operator ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'i' Name.Variable ' ' Text '}}' Comment.Preproc ' ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'i' Name.Variable ' ' Text 'in' Keyword ' ' Text '0' Literal.Number ' ' Text '+' Operator ' ' Text '1' Literal.Number ' ' Text '..' Operator ' ' Text '1' Literal.Number '0' Literal.Number ' ' Text '-' Operator ' ' Text '1' Literal.Number ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'i' Name.Variable ' ' Text '}}' Comment.Preproc ' ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'foo\' => array(1, 10))\n--EXPECT--\n0 1 2 3 4 5 6 7 8 9 10 \na b c d e f g h i j k l m n o p q r s t u v w x y z \nA B C D E F G H I J K L M N O P Q R S T U V W X Y Z \n1 2 3 4 5 6 7 8 9 10 \n1 2 3 4 5 6 7 8 9\n--TEST--\nTwig supports the "ends with" operator\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text "'foo'" Literal.String.Single ' ' Text 'ends with' Keyword ' ' Text "'o'" Literal.String.Single ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'not' Keyword ' ' Text '(' Operator "'foo'" Literal.String.Single ' ' Text 'ends with' Keyword ' ' Text "'f'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'not' Keyword ' ' Text '(' Operator "'foo'" Literal.String.Single ' ' Text 'ends with' Keyword ' ' Text "'foowaytoolong'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'foo'" Literal.String.Single ' ' Text 'ends with' Keyword ' ' Text "''" Literal.String.Single ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'1'" Literal.String.Single ' ' Text 'ends with' Keyword ' ' Text 'true' Keyword.Pseudo ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'ends with' Keyword ' ' Text 'true' Keyword.Pseudo ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text 'ends with' Keyword ' ' Text 'false' Keyword.Pseudo ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "''" Literal.String.Single ' ' Text 'ends with' Keyword ' ' Text 'false' Keyword.Pseudo ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'false' Keyword.Pseudo ' ' Text 'ends with' Keyword ' ' Text 'false' Keyword.Pseudo ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'false' Keyword.Pseudo ' ' Text 'ends with' Keyword ' ' Text "''" Literal.String.Single ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nOK\nOK\nOK\nOK\nKO\nKO\nKO\nKO\nKO\nKO\n--TEST--\nTwig supports grouping of expressions\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '(' Operator '2' Literal.Number ' ' Text '+' Operator ' ' Text '2' Literal.Number ')' Operator ' ' Text '/' Operator ' ' Text '2' Literal.Number ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n2\n--TEST--\nTwig supports literals\n--TEMPLATE--\n1 ' Other '{{' Comment.Preproc ' ' Text 'true' Keyword.Pseudo ' ' Text '}}' Comment.Preproc '\n2 ' Other '{{' Comment.Preproc ' ' Text 'TRUE' Keyword.Pseudo ' ' Text '}}' Comment.Preproc '\n3 ' Other '{{' Comment.Preproc ' ' Text 'false' Keyword.Pseudo ' ' Text '}}' Comment.Preproc '\n4 ' Other '{{' Comment.Preproc ' ' Text 'FALSE' Keyword.Pseudo ' ' Text '}}' Comment.Preproc '\n5 ' Other '{{' Comment.Preproc ' ' Text 'none' Keyword.Pseudo ' ' Text '}}' Comment.Preproc '\n6 ' Other '{{' Comment.Preproc ' ' Text 'NONE' Keyword.Pseudo ' ' Text '}}' Comment.Preproc '\n7 ' Other '{{' Comment.Preproc ' ' Text 'null' Keyword.Pseudo ' ' Text '}}' Comment.Preproc '\n8 ' Other '{{' Comment.Preproc ' ' Text 'NULL' Keyword.Pseudo ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n1 1\n2 1\n3 \n4 \n5 \n6 \n7 \n8 \n--TEST--\nTwig supports __call() for attributes\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '.foo' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '.bar' Name.Variable ' ' Text '}}' Comment.Preproc '\n--EXPECT--\nfoo_from_call\nbar_from_getbar\n--TEST--\nTwig supports the "matches" operator\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text "'foo'" Literal.String.Single ' ' Text 'matches' Name.Variable ' ' Text "'/o/'" Literal.String.Single ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'foo'" Literal.String.Single ' ' Text 'matches' Name.Variable ' ' Text "'/^fo/'" Literal.String.Single ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'foo'" Literal.String.Single ' ' Text 'matches' Name.Variable ' ' Text "'/O/i'" Literal.String.Single ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nOK\nOK\nOK\n--TEST--\nTwig supports method calls\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '.foo' Name.Variable '.foo' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '.foo' Name.Variable '.getFoo' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '.foo' Name.Variable '.bar' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '.foo' Name.Variable '[' Operator "'bar'" Literal.String.Single ']' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '.foo' Name.Variable '.bar' Name.Variable '(' Operator "'a'" Literal.String.Single ',' Operator ' ' Text '4' Literal.Number '3' Literal.Number ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '.foo' Name.Variable '.bar' Name.Variable '(' Operator 'foo' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '.foo' Name.Variable '.self' Name.Variable '.foo' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '.foo' Name.Variable '.is' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '.foo' Name.Variable '.in' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '.foo' Name.Variable '.not' Name.Variable ' ' Text '}}' Comment.Preproc "\n--DATA--\nreturn array('foo' => 'bar', 'items' => array('foo' => new TwigTestFoo(), 'bar' => 'foo'))\n--CONFIG--\nreturn array('strict_variables' => false)\n--EXPECT--\nfoo\nfoo\nbar\n\nbar_a-43\nbar_bar\nfoo\nis\nin\nnot\n--TEST--\nTwig allows to use named operators as variable names\n--TEMPLATE--\n" Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'match' Name.Variable ' ' Text 'in' Keyword ' ' Text 'matches' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'match' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'in' Keyword ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'is' Name.Variable ' ' Text '}}' Comment.Preproc "\n--DATA--\nreturn array('matches' => array(1, 2, 3), 'in' => 'in', 'is' => 'is')\n--EXPECT--\n1\n2\n3\nin\nis\n--TEST--\nTwig parses postfix expressions\n--TEMPLATE--\n" Other '{%' Comment.Preproc ' ' Text 'import' Keyword ' ' Text '_self' Name.Variable ' ' Text 'as' Name.Variable ' ' Text 'macros' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'foo' Name.Variable '(' Operator ')' Operator ' ' Text '%}' Comment.Preproc 'foo' Other '{%' Comment.Preproc ' ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text "'a'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'a'" Literal.String.Single '|' Operator 'upper' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '(' Operator "'a'" Literal.String.Single ')' Operator '|' Operator 'upper' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '-' Operator '1' Literal.Number '|' Operator 'upper' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'macros' Name.Variable '.foo' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '(' Operator 'macros' Name.Variable ')' Operator '.foo' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array();\n--EXPECT--\na\nA\nA\n-1\nfoo\nfoo\n--TEST--\nTwig supports the "same as" operator\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator '1' Literal.Number ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'is' Keyword ' ' Text 'not' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator 'true' Keyword.Pseudo ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator '1' Literal.Number ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'is' Keyword ' ' Text 'not' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator 'true' Keyword.Pseudo ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable ' ' Text '(' Operator '1' Literal.Number ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'is' Keyword ' ' Text 'not' Keyword '\n ' Text 'same' Name.Function '\n ' Text 'as' Name.Variable '\n ' Text '(' Operator 'true' Keyword.Pseudo ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nOK\nOK\nOK\nOK\nOK\nOK\n--TEST--\nTwig supports the "starts with" operator\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text "'foo'" Literal.String.Single ' ' Text 'starts with' Keyword ' ' Text "'f'" Literal.String.Single ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'not' Keyword ' ' Text '(' Operator "'foo'" Literal.String.Single ' ' Text 'starts with' Keyword ' ' Text "'oo'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'not' Keyword ' ' Text '(' Operator "'foo'" Literal.String.Single ' ' Text 'starts with' Keyword ' ' Text "'foowaytoolong'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'foo'" Literal.String.Single ' ' Text 'starts with' Keyword ' ' Text "'f'" Literal.String.Single ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'foo'" Literal.String.Single ' ' Text 'starts\nwith' Keyword ' ' Text "'f'" Literal.String.Single ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'foo'" Literal.String.Single ' ' Text 'starts with' Keyword ' ' Text "''" Literal.String.Single ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'1'" Literal.String.Single ' ' Text 'starts with' Keyword ' ' Text 'true' Keyword.Pseudo ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "''" Literal.String.Single ' ' Text 'starts with' Keyword ' ' Text 'false' Keyword.Pseudo ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'a'" Literal.String.Single ' ' Text 'starts with' Keyword ' ' Text 'false' Keyword.Pseudo ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'false' Keyword.Pseudo ' ' Text 'starts with' Keyword ' ' Text "''" Literal.String.Single ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nOK\nOK\nOK\nOK\nOK\nOK\nKO\nKO\nKO\nKO\n--TEST--\nTwig supports string interpolation\n--TEMPLATE--\n' Other '{# "foo #{"foo #{bar} baz"} baz" #}' Comment '\n' Other '{# "foo #{bar}#{bar} baz" #}' Comment "\n--DATA--\nreturn array('bar' => 'BAR');\n--EXPECT--\nfoo foo BAR baz baz\nfoo BARBAR baz\n--TEST--\nTwig supports the ternary operator\n--TEMPLATE--\n" Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '?' Operator ' ' Text "'YES'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text '?' Operator ' ' Text "'YES'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nYES\n\n--TEST--\nTwig supports the ternary operator\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text "'YES'" Literal.String.Single ' ' Text '?' Operator ':' Operator ' ' Text "'NO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text '?' Operator ':' Operator ' ' Text "'NO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nYES\nNO\n--TEST--\nTwig supports the ternary operator\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '?' Operator ' ' Text "'YES'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'NO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text '?' Operator ' ' Text "'YES'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'NO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text '?' Operator ' ' Text "'YES'" Literal.String.Single ' ' Text ':' Operator ' ' Text '(' Operator '1' Literal.Number ' ' Text '?' Operator ' ' Text "'YES1'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'NO1'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text '?' Operator ' ' Text "'YES'" Literal.String.Single ' ' Text ':' Operator ' ' Text '(' Operator '0' Literal.Number ' ' Text '?' Operator ' ' Text "'YES1'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'NO1'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text '==' Operator ' ' Text '1' Literal.Number ' ' Text '?' Operator ' ' Text "'foo
'" Literal.String.Single ":''" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '~' Operator ' ' Text '(' Operator 'bar' Name.Variable ' ' Text '?' Operator ' ' Text '(' Operator "'-'" Literal.String.Single ' ' Text '~' Operator ' ' Text 'bar' Name.Variable ')' Operator ' ' Text ':' Operator ' ' Text "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc "\n--DATA--\nreturn array('foo' => 'foo', 'bar' => 'bar')\n--EXPECT--\nYES\nNO\nYES1\nNO1\nfoo
\nfoo-bar\n--TEST--\nTwig does not allow to use two-word named operators as variable names\n--TEMPLATE--\n" Other '{{' Comment.Preproc ' ' Text 'starts with' Keyword ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXCEPTION--\nTwig_Error_Syntax: Unexpected token "operator" of value "starts with" in "index.twig" at line 2\n--TEST--\nTwig unary operators precedence\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '-' Operator '1' Literal.Number ' ' Text '-' Operator ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '-' Operator '1' Literal.Number ' ' Text '-' Operator ' ' Text '-' Operator '1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '-' Operator '1' Literal.Number ' ' Text '*' Operator ' ' Text '-' Operator '1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '4' Literal.Number ' ' Text '/' Operator ' ' Text '-' Operator '1' Literal.Number ' ' Text '*' Operator ' ' Text '5' Literal.Number ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n-2\n0\n1\n-20\n--TEST--\nTwig supports unary operators (not, -, +)\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'not' Keyword ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text 'not' Keyword ' ' Text '0' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '+' Operator '1' Literal.Number ' ' Text '+' Operator ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text '-' Operator '1' Literal.Number ' ' Text '-' Operator ' ' Text '1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'not' Keyword ' ' Text '(' Operator 'false' Keyword.Pseudo ' ' Text 'or' Keyword ' ' Text 'true' Keyword.Pseudo ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n/1\n2/-2\n\n--TEST--\n"abs" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '(' Operator '-' Operator '5.5' Literal.Number ')' Operator '|' Operator 'abs' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '(' Operator '-' Operator '5' Literal.Number ')' Operator '|' Operator 'abs' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '(' Operator '-' Operator '0' Literal.Number ')' Operator '|' Operator 'abs' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number '|' Operator 'abs' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '5' Literal.Number '|' Operator 'abs' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '5.5' Literal.Number '|' Operator 'abs' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'number1' Name.Variable '|' Operator 'abs' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'number2' Name.Variable '|' Operator 'abs' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'number3' Name.Variable '|' Operator 'abs' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'number4' Name.Variable '|' Operator 'abs' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'number5' Name.Variable '|' Operator 'abs' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'number6' Name.Variable '|' Operator 'abs' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'number1\' => -5.5, \'number2\' => -5, \'number3\' => -0, \'number4\' => 0, \'number5\' => 5, \'number6\' => 5.5)\n--EXPECT--\n5.5\n5\n0\n0\n5\n5.5\n5.5\n5\n0\n0\n5\n5.5\n--TEST--\n"batch" filter\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'row' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable '|' Operator 'batch' Name.Function '(' Operator '3.1' Literal.Number ')' Operator ' ' Text '%}' Comment.Preproc '\n
\n ' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'column' Name.Variable ' ' Text 'in' Keyword ' ' Text 'row' Name.Variable ' ' Text '%}' Comment.Preproc '\n
' Other '{{' Comment.Preproc ' ' Text 'column' Name.Variable ' ' Text '}}' Comment.Preproc '
\n ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n
\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\', \'c\', \'d\', \'e\', \'f\', \'g\', \'h\', \'i\', \'j\'))\n--EXPECT--\n
\n
a
\n
b
\n
c
\n
d
\n
\n
\n
e
\n
f
\n
g
\n
h
\n
\n
\n
i
\n
j
\n
\n--TEST--\n"batch" filter\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'row' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable '|' Operator 'batch' Name.Function '(' Operator '3' Literal.Number ')' Operator ' ' Text '%}' Comment.Preproc '\n
\n ' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'column' Name.Variable ' ' Text 'in' Keyword ' ' Text 'row' Name.Variable ' ' Text '%}' Comment.Preproc '\n
' Other '{{' Comment.Preproc ' ' Text 'column' Name.Variable ' ' Text '}}' Comment.Preproc '
\n ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n
\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\', \'c\', \'d\', \'e\', \'f\', \'g\', \'h\', \'i\', \'j\'))\n--EXPECT--\n
\n
a
\n
b
\n
c
\n
\n
\n
d
\n
e
\n
f
\n
\n
\n
g
\n
h
\n
i
\n
\n
\n
j
\n
\n--TEST--\n"batch" filter\n--TEMPLATE--\n\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'row' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable '|' Operator 'batch' Name.Function '(' Operator '3' Literal.Number ',' Operator ' ' Text "''" Literal.String.Single ')' Operator ' ' Text '%}' Comment.Preproc '\n \n ' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'column' Name.Variable ' ' Text 'in' Keyword ' ' Text 'row' Name.Variable ' ' Text '%}' Comment.Preproc '\n \n ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n \n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n
' Other '{{' Comment.Preproc ' ' Text 'column' Name.Variable ' ' Text '}}' Comment.Preproc '
\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\', \'c\', \'d\', \'e\', \'f\', \'g\', \'h\', \'i\', \'j\'))\n--EXPECT--\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
abc
def
ghi
j
\n--TEST--\n"batch" filter\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'row' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable '|' Operator 'batch' Name.Function '(' Operator '3' Literal.Number ',' Operator ' ' Text "'fill'" Literal.String.Single ')' Operator ' ' Text '%}' Comment.Preproc '\n
\n ' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'column' Name.Variable ' ' Text 'in' Keyword ' ' Text 'row' Name.Variable ' ' Text '%}' Comment.Preproc '\n
' Other '{{' Comment.Preproc ' ' Text 'column' Name.Variable ' ' Text '}}' Comment.Preproc '
\n ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n
\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\', \'c\', \'d\', \'e\', \'f\', \'g\', \'h\', \'i\', \'j\', \'k\', \'l\'))\n--EXPECT--\n
\n
a
\n
b
\n
c
\n
\n
\n
d
\n
e
\n
f
\n
\n
\n
g
\n
h
\n
i
\n
\n
\n
j
\n
k
\n
l
\n
\n--TEST--\n"batch" filter\n--TEMPLATE--\n\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'row' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable '|' Operator 'batch' Name.Function '(' Operator '3' Literal.Number ',' Operator ' ' Text "'fill'" Literal.String.Single ')' Operator ' ' Text '%}' Comment.Preproc '\n \n ' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'column' Name.Variable ' ' Text 'in' Keyword ' ' Text 'row' Name.Variable ' ' Text '%}' Comment.Preproc '\n \n ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n \n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n
' Other '{{' Comment.Preproc ' ' Text 'column' Name.Variable ' ' Text '}}' Comment.Preproc '
\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\', \'c\', \'d\', \'e\', \'f\', \'g\', \'h\', \'i\', \'j\'))\n--EXPECT--\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
abc
def
ghi
jfillfill
\n--TEST--\n"convert_encoding" filter\n--CONDITION--\nfunction_exists(\'iconv\') || function_exists(\'mb_convert_encoding\')\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '"愛していますか?"' Literal.String.Double '|' Operator 'convert_encoding' Name.Function '(' Operator "'ISO-2022-JP'" Literal.String.Single ',' Operator ' ' Text "'UTF-8'" Literal.String.Single ')' Operator '|' Operator 'convert_encoding' Name.Function '(' Operator "'UTF-8'" Literal.String.Single ',' Operator ' ' Text "'ISO-2022-JP'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n愛していますか?\n--TEST--\n"date" filter (interval support as of PHP 5.3)\n--CONDITION--\nversion_compare(phpversion(), \'5.3.0\', \'>=\')\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'date2' Name.Variable '|' Operator 'date' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date2' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'%d days'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\ndate_default_timezone_set(\'UTC\');\n$twig->getExtension(\'core\')->setDateFormat(\'Y-m-d\', \'%d days %h hours\');\nreturn array(\n \'date2\' => new DateInterval(\'P2D\'),\n)\n--EXPECT--\n2 days 0 hours\n2 days\n--TEST--\n"date" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\ndate_default_timezone_set(\'UTC\');\n$twig->getExtension(\'core\')->setDateFormat(\'Y-m-d\', \'%d days %h hours\');\nreturn array(\n \'date1\' => mktime(13, 45, 0, 10, 4, 2010),\n)\n--EXPECT--\n2010-10-04\n04/10/2010\n--TEST--\n"date" filter\n--CONDITION--\nversion_compare(phpversion(), \'5.5.0\', \'>=\')\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s'" Literal.String.Single ',' Operator ' ' Text "'Asia/Hong_Kong'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s'" Literal.String.Single ',' Operator ' ' Text 'timezone1' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'date2' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s P'" Literal.String.Single ',' Operator ' ' Text "'Europe/Paris'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date2' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s P'" Literal.String.Single ',' Operator ' ' Text "'Asia/Hong_Kong'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date2' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s P'" Literal.String.Single ',' Operator ' ' Text 'false' Keyword.Pseudo ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date2' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'e'" Literal.String.Single ',' Operator ' ' Text "'Europe/Paris'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date2' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'e'" Literal.String.Single ',' Operator ' ' Text 'false' Keyword.Pseudo ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\ndate_default_timezone_set(\'Europe/Paris\');\nreturn array(\n \'date1\' => new DateTimeImmutable(\'2010-10-04 13:45\'),\n \'date2\' => new DateTimeImmutable(\'2010-10-04 13:45\', new DateTimeZone(\'America/New_York\')),\n \'timezone1\' => new DateTimeZone(\'America/New_York\'),\n)\n--EXPECT--\nOctober 4, 2010 13:45\n04/10/2010\n04/10/2010 19:45:00\n04/10/2010 07:45:00\n04/10/2010 13:45:00\n\n04/10/2010 19:45:00 +02:00\n05/10/2010 01:45:00 +08:00\n04/10/2010 13:45:00 -04:00\nEurope/Paris\nAmerica/New_York\n--TEST--\n"date" filter (interval support as of PHP 5.3)\n--CONDITION--\nversion_compare(phpversion(), \'5.3.0\', \'>=\')\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'%d days %h hours'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'%d days %h hours'" Literal.String.Single ',' Operator ' ' Text 'timezone1' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\ndate_default_timezone_set(\'UTC\');\nreturn array(\n \'date1\' => new DateInterval(\'P2D\'),\n // This should have no effect on DateInterval formatting\n \'timezone1\' => new DateTimeZone(\'America/New_York\'),\n)\n--EXPECT--\n2 days\n2 days 0 hours\n2 days 0 hours\n--TEST--\n"date_modify" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date_modify' Name.Function '(' Operator "'-1day'" Literal.String.Single ')' Operator '|' Operator 'date' Name.Function '(' Operator "'Y-m-d H:i:s'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date2' Name.Variable '|' Operator 'date_modify' Name.Function '(' Operator "'-1day'" Literal.String.Single ')' Operator '|' Operator 'date' Name.Function '(' Operator "'Y-m-d H:i:s'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\ndate_default_timezone_set(\'UTC\');\nreturn array(\n \'date1\' => \'2010-10-04 13:45\',\n \'date2\' => new DateTime(\'2010-10-04 13:45\'),\n)\n--EXPECT--\n2010-10-03 13:45:00\n2010-10-03 13:45:00\n--TEST--\n"date" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'date' Name.Variable '|' Operator 'date' Name.Function '(' Operator 'format' Name.Variable '=' Operator "'d/m/Y H:i:s P'" Literal.String.Single ',' Operator ' ' Text 'timezone' Name.Variable '=' Operator "'America/Chicago'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date' Name.Variable '|' Operator 'date' Name.Function '(' Operator 'timezone' Name.Variable '=' Operator "'America/Chicago'" Literal.String.Single ',' Operator ' ' Text 'format' Name.Variable '=' Operator "'d/m/Y H:i:s P'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s P'" Literal.String.Single ',' Operator ' ' Text 'timezone' Name.Variable '=' Operator "'America/Chicago'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\ndate_default_timezone_set(\'UTC\');\nreturn array(\'date\' => mktime(13, 45, 0, 10, 4, 2010))\n--EXPECT--\n04/10/2010 08:45:00 -05:00\n04/10/2010 08:45:00 -05:00\n04/10/2010 08:45:00 -05:00\n--TEST--\n"date" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s'" Literal.String.Single ',' Operator ' ' Text "'Asia/Hong_Kong'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s P'" Literal.String.Single ',' Operator ' ' Text "'Asia/Hong_Kong'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s P'" Literal.String.Single ',' Operator ' ' Text "'America/Chicago'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'e'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date1' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'date2' Name.Variable '|' Operator 'date' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date2' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date2' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s'" Literal.String.Single ',' Operator ' ' Text "'Asia/Hong_Kong'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date2' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s'" Literal.String.Single ',' Operator ' ' Text 'timezone1' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date2' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'date3' Name.Variable '|' Operator 'date' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date3' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'date4' Name.Variable '|' Operator 'date' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date4' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'date5' Name.Variable '|' Operator 'date' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date5' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'date6' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s P'" Literal.String.Single ',' Operator ' ' Text "'Europe/Paris'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date6' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s P'" Literal.String.Single ',' Operator ' ' Text "'Asia/Hong_Kong'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date6' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s P'" Literal.String.Single ',' Operator ' ' Text 'false' Keyword.Pseudo ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date6' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'e'" Literal.String.Single ',' Operator ' ' Text "'Europe/Paris'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date6' Name.Variable '|' Operator 'date' Name.Function '(' Operator "'e'" Literal.String.Single ',' Operator ' ' Text 'false' Keyword.Pseudo ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'date7' Name.Variable '|' Operator 'date' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\ndate_default_timezone_set(\'Europe/Paris\');\nreturn array(\n \'date1\' => mktime(13, 45, 0, 10, 4, 2010),\n \'date2\' => new DateTime(\'2010-10-04 13:45\'),\n \'date3\' => \'2010-10-04 13:45\',\n \'date4\' => 1286199900, // DateTime::createFromFormat(\'Y-m-d H:i\', \'2010-10-04 13:45\', new DateTimeZone(\'UTC\'))->getTimestamp() -- A unixtimestamp is always GMT\n \'date5\' => -189291360, // DateTime::createFromFormat(\'Y-m-d H:i\', \'1964-01-02 03:04\', new DateTimeZone(\'UTC\'))->getTimestamp(),\n \'date6\' => new DateTime(\'2010-10-04 13:45\', new DateTimeZone(\'America/New_York\')),\n \'date7\' => \'2010-01-28T15:00:00+05:00\',\n \'timezone1\' => new DateTimeZone(\'America/New_York\'),\n)\n--EXPECT--\nOctober 4, 2010 13:45\n04/10/2010\n04/10/2010 19:45:00\n04/10/2010 19:45:00 +08:00\n04/10/2010 06:45:00 -05:00\nEurope/Paris\n04/10/2010 13:45:00\n\nOctober 4, 2010 13:45\n04/10/2010\n04/10/2010 19:45:00\n04/10/2010 07:45:00\n04/10/2010 13:45:00\n\nOctober 4, 2010 13:45\n04/10/2010\n\nOctober 4, 2010 15:45\n04/10/2010\n\nJanuary 2, 1964 04:04\n02/01/1964\n\n04/10/2010 19:45:00 +02:00\n05/10/2010 01:45:00 +08:00\n04/10/2010 13:45:00 -04:00\nEurope/Paris\nAmerica/New_York\n\nJanuary 28, 2010 11:00\n--TEST--\n"default" filter\n--TEMPLATE--\nVariable:\n' Other '{{' Comment.Preproc ' ' Text 'definedVar' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'zeroVar' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'emptyVar' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nullVar' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'undefinedVar' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\nArray access:\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.definedVar' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '[' Operator "'definedVar'" Literal.String.Single ']' Operator ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.zeroVar' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.emptyVar' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.nullVar' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.undefinedVar' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '[' Operator "'undefinedVar'" Literal.String.Single ']' Operator ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'undefinedVar' Name.Variable '.foo' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\nPlain values:\n' Other '{{' Comment.Preproc ' ' Text "'defined'" Literal.String.Single ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "''" Literal.String.Single ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'null' Keyword.Pseudo ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\nPrecedence:\n' Other '{{' Comment.Preproc ' ' Text "'o'" Literal.String.Single ' ' Text '~' Operator ' ' Text 'nullVar' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'k'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'o'" Literal.String.Single ' ' Text '~' Operator ' ' Text 'nested' Name.Variable '.nullVar' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'k'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\nObject methods:\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.foo' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.undefinedMethod' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.getFoo' Name.Variable '(' Operator ')' Operator ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.getFoo' Name.Variable '(' Operator "'a'" Literal.String.Single ')' Operator ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.undefinedMethod' Name.Variable '(' Operator ')' Operator ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.undefinedMethod' Name.Variable '(' Operator "'a'" Literal.String.Single ')' Operator ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\nDeep nested:\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.undefinedVar' Name.Variable '.foo' Name.Variable '.bar' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.definedArray' Name.Variable '.0' Literal.Number ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '[' Operator "'definedArray'" Literal.String.Single ']' Operator '[' Operator '0' Literal.Number ']' Operator ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.self' Name.Variable '.foo' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.self' Name.Variable '.undefinedMethod' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.undefinedMethod' Name.Variable '.self' Name.Variable ' ' Text '|' Operator 'default' Name.Function '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'same' Name.Function ' ' Text 'as' Name.Variable '(' Operator "'default'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc "\n--DATA--\nreturn array(\n 'definedVar' => 'defined',\n 'zeroVar' => 0,\n 'emptyVar' => '',\n 'nullVar' => null,\n 'nested' => array(\n 'definedVar' => 'defined',\n 'zeroVar' => 0,\n 'emptyVar' => '',\n 'nullVar' => null,\n 'definedArray' => array(0),\n ),\n 'object' => new TwigTestFoo(),\n)\n--CONFIG--\nreturn array('strict_variables' => false)\n--EXPECT--\nVariable:\nok\nok\nok\nok\nok\nArray access:\nok\nok\nok\nok\nok\nok\nok\nok\nPlain values:\nok\nok\nok\nok\nPrecedence:\nok\nok\nObject methods:\nok\nok\nok\nok\nok\nok\nDeep nested:\nok\nok\nok\nok\nok\nok\n--DATA--\nreturn array(\n 'definedVar' => 'defined',\n 'zeroVar' => 0,\n 'emptyVar' => '',\n 'nullVar' => null,\n 'nested' => array(\n 'definedVar' => 'defined',\n 'zeroVar' => 0,\n 'emptyVar' => '',\n 'nullVar' => null,\n 'definedArray' => array(0),\n ),\n 'object' => new TwigTestFoo(),\n)\n--CONFIG--\nreturn array('strict_variables' => true)\n--EXPECT--\nVariable:\nok\nok\nok\nok\nok\nArray access:\nok\nok\nok\nok\nok\nok\nok\nok\nPlain values:\nok\nok\nok\nok\nPrecedence:\nok\nok\nObject methods:\nok\nok\nok\nok\nok\nok\nDeep nested:\nok\nok\nok\nok\nok\nok\n--TEST--\ndynamic filter\n--TEMPLATE--\n" Other '{{' Comment.Preproc ' ' Text "'bar'" Literal.String.Single '|' Operator 'foo_path' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'bar'" Literal.String.Single '|' Operator 'a_foo_b_bar' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfoo/bar\na/b/bar\n--TEST--\n"escape" filter does not escape with the html strategy when using the html_attr strategy\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text "'
'" Literal.String.Single '|' Operator 'escape' Name.Function '(' Operator "'html_attr'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n<br />\n--TEST--\n"escape" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '"愛していますか?
"' Literal.String.Double '|' Operator 'e' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n愛していますか? <br />\n--TEST--\n"escape" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '"foo
"' Literal.String.Double '|' Operator 'e' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfoo <br />\n--TEST--\n"first" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '[' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '4' Literal.Number ']' Operator '|' Operator 'first' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator 'a' Name.Variable ':' Operator ' ' Text '1' Literal.Number ',' Operator ' ' Text 'b' Name.Variable ':' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text 'c' Name.Variable ':' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text 'd' Name.Variable ':' Operator ' ' Text '4' Literal.Number '}' Operator '|' Operator 'first' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'1234'" Literal.String.Single '|' Operator 'first' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'arr' Name.Variable '|' Operator 'first' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'Ä€é'" Literal.String.Single '|' Operator 'first' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "''" Literal.String.Single '|' Operator 'first' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'arr\' => new ArrayObject(array(1, 2, 3, 4)))\n--EXPECT--\n1\n1\n1\n1\nÄ\n--TEST--\n"escape" filter\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n foo
\n' Other '{%' Comment.Preproc ' ' Text 'endset' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '|' Operator 'e' Name.Function '(' Operator "'html'" Literal.String.Single ')' Operator ' ' Text '-' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '|' Operator 'e' Name.Function '(' Operator "'js'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text 'true' Keyword.Pseudo ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n foo<br />\n\\x20\\x20\\x20\\x20foo\\x3Cbr\\x20\\x2F\\x3E\\x0A\n foo
\n--TEST--\n"format" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'string' Name.Variable '|' Operator 'format' Name.Function '(' Operator 'foo' Name.Variable ',' Operator ' ' Text '3' Literal.Number ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'string\' => \'%s/%d\', \'foo\' => \'bar\')\n--EXPECT--\nbar/3\n--TEST--\n"join" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '[' Operator '"foo"' Literal.String.Double ',' Operator ' ' Text '"bar"' Literal.String.Double ']' Operator '|' Operator 'join' Name.Function '(' Operator "', '" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '|' Operator 'join' Name.Function '(' Operator "', '" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'bar' Name.Variable '|' Operator 'join' Name.Function '(' Operator "', '" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'foo\' => new TwigTestFoo(), \'bar\' => new ArrayObject(array(3, 4)))\n--EXPECT--\nfoo, bar\n1, 2\n3, 4\n--TEST--\n"json_encode" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '"foo"' Literal.String.Double '|' Operator 'json_encode' Name.Function '|' Operator 'raw' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '|' Operator 'json_encode' Name.Function '|' Operator 'raw' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator 'foo' Name.Variable ',' Operator ' ' Text '"foo"' Literal.String.Double ']' Operator '|' Operator 'json_encode' Name.Function '|' Operator 'raw' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'foo\' => new Twig_Markup(\'foo\', \'UTF-8\'))\n--EXPECT--\n"foo"\n"foo"\n["foo","foo"]\n--TEST--\n"last" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '[' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '4' Literal.Number ']' Operator '|' Operator 'last' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator 'a' Name.Variable ':' Operator ' ' Text '1' Literal.Number ',' Operator ' ' Text 'b' Name.Variable ':' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text 'c' Name.Variable ':' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text 'd' Name.Variable ':' Operator ' ' Text '4' Literal.Number '}' Operator '|' Operator 'last' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'1234'" Literal.String.Single '|' Operator 'last' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'arr' Name.Variable '|' Operator 'last' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'Ä€é'" Literal.String.Single '|' Operator 'last' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "''" Literal.String.Single '|' Operator 'last' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'arr\' => new ArrayObject(array(1, 2, 3, 4)))\n--EXPECT--\n4\n4\n4\n4\né\n--TEST--\n"length" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'array' Name.Variable '|' Operator 'length' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'string' Name.Variable '|' Operator 'length' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'number' Name.Variable '|' Operator 'length' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'markup' Name.Variable '|' Operator 'length' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'array\' => array(1, 4), \'string\' => \'foo\', \'number\' => 1000, \'markup\' => new Twig_Markup(\'foo\', \'UTF-8\'))\n--EXPECT--\n2\n3\n4\n3\n--TEST--\n"length" filter\n--CONDITION--\nfunction_exists(\'mb_get_info\')\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'string' Name.Variable '|' Operator 'length' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'markup' Name.Variable '|' Operator 'length' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'string\' => \'été\', \'markup\' => new Twig_Markup(\'foo\', \'UTF-8\'))\n--EXPECT--\n3\n3\n--TEST--\n"merge" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '|' Operator 'merge' Name.Function '(' Operator '{' Operator "'bar'" Literal.String.Single ':' Operator ' ' Text "'foo'" Literal.String.Single '}' Operator ')' Operator '|' Operator 'join' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '|' Operator 'merge' Name.Function '(' Operator '{' Operator "'bar'" Literal.String.Single ':' Operator ' ' Text "'foo'" Literal.String.Single '}' Operator ')' Operator '|' Operator 'keys' Name.Function '|' Operator 'join' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator "'bar'" Literal.String.Single ':' Operator ' ' Text "'foo'" Literal.String.Single '}' Operator '|' Operator 'merge' Name.Function '(' Operator 'items' Name.Variable ')' Operator '|' Operator 'join' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator "'bar'" Literal.String.Single ':' Operator ' ' Text "'foo'" Literal.String.Single '}' Operator '|' Operator 'merge' Name.Function '(' Operator 'items' Name.Variable ')' Operator '|' Operator 'keys' Name.Function '|' Operator 'join' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'numerics' Name.Variable '|' Operator 'merge' Name.Function '(' Operator '[' Operator '4' Literal.Number ',' Operator ' ' Text '5' Literal.Number ',' Operator ' ' Text '6' Literal.Number ']' Operator ')' Operator '|' Operator 'join' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'foo\' => \'bar\'), \'numerics\' => array(1, 2, 3))\n--EXPECT--\nbarfoo\nfoobar\nfoobar\nbarfoo\n123456\n--TEST--\n"nl2br" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '"I like Twig.\\nYou will like it too.\\n\\nEverybody like it!"' Literal.String.Double '|' Operator 'nl2br' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'text' Name.Variable '|' Operator 'nl2br' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'text\' => "If you have some HTML\\nit will be escaped.")\n--EXPECT--\nI like Twig.
\nYou will like it too.
\n
\nEverybody like it!\nIf you have some <strong>HTML</strong>
\nit will be escaped.\n--TEST--\n"number_format" filter with defaults.\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number '0' Literal.Number '|' Operator 'number_format' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number '0.25' Literal.Number '|' Operator 'number_format' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number '0.25' Literal.Number '|' Operator 'number_format' Name.Function '(' Operator '1' Literal.Number ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number '0.25' Literal.Number '|' Operator 'number_format' Name.Function '(' Operator '2' Literal.Number ',' Operator ' ' Text "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number '0' Literal.Number '2' Literal.Number '0.25' Literal.Number '|' Operator 'number_format' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number '0' Literal.Number '2' Literal.Number '0.25' Literal.Number '|' Operator 'number_format' Name.Function '(' Operator '2' Literal.Number ',' Operator ' ' Text "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number '0' Literal.Number '2' Literal.Number '0.25' Literal.Number '|' Operator 'number_format' Name.Function '(' Operator '2' Literal.Number ',' Operator ' ' Text "','" Literal.String.Single ',' Operator ' ' Text "'.'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\n$twig->getExtension(\'core\')->setNumberFormat(2, \'!\', \'=\');\nreturn array();\n--EXPECT--\n20!00\n20!25\n20!3\n20,25\n1=020!25\n1=020,25\n1.020,25\n--TEST--\n"number_format" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number '0' Literal.Number '|' Operator 'number_format' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number '0.25' Literal.Number '|' Operator 'number_format' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number '0.25' Literal.Number '|' Operator 'number_format' Name.Function '(' Operator '2' Literal.Number ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number '0.25' Literal.Number '|' Operator 'number_format' Name.Function '(' Operator '2' Literal.Number ',' Operator ' ' Text "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number '0' Literal.Number '2' Literal.Number '0.25' Literal.Number '|' Operator 'number_format' Name.Function '(' Operator '2' Literal.Number ',' Operator ' ' Text "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number '0' Literal.Number '2' Literal.Number '0.25' Literal.Number '|' Operator 'number_format' Name.Function '(' Operator '2' Literal.Number ',' Operator ' ' Text "','" Literal.String.Single ',' Operator ' ' Text "'.'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array();\n--EXPECT--\n20\n20\n20.25\n20,25\n1,020,25\n1.020,25\n--TEST--\n"replace" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '"I like %this% and %that%."' Literal.String.Double '|' Operator 'replace' Name.Function '(' Operator '{' Operator "'%this%'" Literal.String.Single ':' Operator ' ' Text '"foo"' Literal.String.Double ',' Operator ' ' Text "'%that%'" Literal.String.Single ':' Operator ' ' Text '"bar"' Literal.String.Double '}' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nI like foo and bar.\n--TEST--\n"reverse" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '[' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '4' Literal.Number ']' Operator '|' Operator 'reverse' Name.Function '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'1234évènement'" Literal.String.Single '|' Operator 'reverse' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'arr' Name.Variable '|' Operator 'reverse' Name.Function '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator "'a'" Literal.String.Single ':' Operator ' ' Text "'c'" Literal.String.Single ',' Operator ' ' Text "'b'" Literal.String.Single ':' Operator ' ' Text "'a'" Literal.String.Single '}' Operator '|' Operator 'reverse' Name.Function '(' Operator ')' Operator '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator "'a'" Literal.String.Single ':' Operator ' ' Text "'c'" Literal.String.Single ',' Operator ' ' Text "'b'" Literal.String.Single ':' Operator ' ' Text "'a'" Literal.String.Single '}' Operator '|' Operator 'reverse' Name.Function '(' Operator 'preserveKeys' Name.Variable '=' Operator 'true' Keyword.Pseudo ')' Operator '|' Operator 'join' Name.Function '(' Operator 'glue' Name.Variable '=' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator "'a'" Literal.String.Single ':' Operator ' ' Text "'c'" Literal.String.Single ',' Operator ' ' Text "'b'" Literal.String.Single ':' Operator ' ' Text "'a'" Literal.String.Single '}' Operator '|' Operator 'reverse' Name.Function '(' Operator 'preserve_keys' Name.Variable '=' Operator 'true' Keyword.Pseudo ')' Operator '|' Operator 'join' Name.Function '(' Operator 'glue' Name.Variable '=' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'arr\' => new ArrayObject(array(1, 2, 3, 4)))\n--EXPECT--\n4321\ntnemenèvé4321\n4321\na,c\na,c\na,c\n--TEST--\n"round" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '2.7' Literal.Number '|' Operator 'round' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2.1' Literal.Number '|' Operator 'round' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2.1234' Literal.Number '|' Operator 'round' Name.Function '(' Operator '3' Literal.Number ',' Operator ' ' Text "'floor'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2.1' Literal.Number '|' Operator 'round' Name.Function '(' Operator '0' Literal.Number ',' Operator ' ' Text "'ceil'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number '1.3' Literal.Number '|' Operator 'round' Name.Function '(' Operator '-' Operator '1' Literal.Number ')' Operator '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number '1.3' Literal.Number '|' Operator 'round' Name.Function '(' Operator '-' Operator '1' Literal.Number ',' Operator ' ' Text "'ceil'" Literal.String.Single ')' Operator '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number '1.3' Literal.Number '|' Operator 'round' Name.Function '(' Operator '-' Operator '1' Literal.Number ',' Operator ' ' Text "'floor'" Literal.String.Single ')' Operator '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n3\n2\n2.123\n3\n\n20\n30\n20\n--TEST--\n"slice" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '[' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '4' Literal.Number ']' Operator '[' Operator '1' Literal.Number ':' Operator '2' Literal.Number ']' Operator '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator 'a' Name.Variable ':' Operator ' ' Text '1' Literal.Number ',' Operator ' ' Text 'b' Name.Variable ':' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text 'c' Name.Variable ':' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text 'd' Name.Variable ':' Operator ' ' Text '4' Literal.Number '}' Operator '[' Operator '1' Literal.Number ':' Operator '2' Literal.Number ']' Operator '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '4' Literal.Number ']' Operator '[' Operator 'start' Name.Variable ':' Operator 'length' Name.Variable ']' Operator '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '4' Literal.Number ']' Operator '|' Operator 'slice' Name.Function '(' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ')' Operator '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '4' Literal.Number ']' Operator '|' Operator 'slice' Name.Function '(' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ')' Operator '|' Operator 'keys' Name.Function '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '4' Literal.Number ']' Operator '|' Operator 'slice' Name.Function '(' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text 'true' Keyword.Pseudo ')' Operator '|' Operator 'keys' Name.Function '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator 'a' Name.Variable ':' Operator ' ' Text '1' Literal.Number ',' Operator ' ' Text 'b' Name.Variable ':' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text 'c' Name.Variable ':' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text 'd' Name.Variable ':' Operator ' ' Text '4' Literal.Number '}' Operator '|' Operator 'slice' Name.Function '(' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ')' Operator '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator 'a' Name.Variable ':' Operator ' ' Text '1' Literal.Number ',' Operator ' ' Text 'b' Name.Variable ':' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text 'c' Name.Variable ':' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text 'd' Name.Variable ':' Operator ' ' Text '4' Literal.Number '}' Operator '|' Operator 'slice' Name.Function '(' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ')' Operator '|' Operator 'keys' Name.Function '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'1234'" Literal.String.Single '|' Operator 'slice' Name.Function '(' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'1234'" Literal.String.Single '[' Operator '1' Literal.Number ':' Operator '2' Literal.Number ']' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'arr' Name.Variable '|' Operator 'slice' Name.Function '(' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ')' Operator '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'arr' Name.Variable '[' Operator '1' Literal.Number ':' Operator '2' Literal.Number ']' Operator '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text '[' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '4' Literal.Number ']' Operator '|' Operator 'slice' Name.Function '(' Operator '1' Literal.Number ')' Operator '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator '1' Literal.Number ',' Operator ' ' Text '2' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '4' Literal.Number ']' Operator '[' Operator '1' Literal.Number ':' Operator ']' Operator '|' Operator 'join' Name.Function '(' Operator "''" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'1234'" Literal.String.Single '|' Operator 'slice' Name.Function '(' Operator '1' Literal.Number ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'1234'" Literal.String.Single '[' Operator '1' Literal.Number ':' Operator ']' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'1234'" Literal.String.Single '[' Operator ':' Operator '1' Literal.Number ']' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'start\' => 1, \'length\' => 2, \'arr\' => new ArrayObject(array(1, 2, 3, 4)))\n--EXPECT--\n23\n23\n23\n23\n01\n12\n23\nbc\n23\n23\n23\n23\n\n234\n234\n234\n234\n1\n--TEST--\n"sort" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'array1' Name.Variable '|' Operator 'sort' Name.Function '|' Operator 'join' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'array2' Name.Variable '|' Operator 'sort' Name.Function '|' Operator 'join' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'array1\' => array(4, 1), \'array2\' => array(\'foo\', \'bar\'))\n--EXPECT--\n14\nbarfoo\n--TEST--\n"split" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '"one,two,three,four,five"' Literal.String.Double '|' Operator 'split' Name.Function '(' Operator "','" Literal.String.Single ')' Operator '|' Operator 'join' Name.Function '(' Operator "'-'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '|' Operator 'split' Name.Function '(' Operator "','" Literal.String.Single ')' Operator '|' Operator 'join' Name.Function '(' Operator "'-'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '|' Operator 'split' Name.Function '(' Operator "','" Literal.String.Single ',' Operator ' ' Text '3' Literal.Number ')' Operator '|' Operator 'join' Name.Function '(' Operator "'-'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'baz' Name.Variable '|' Operator 'split' Name.Function '(' Operator "''" Literal.String.Single ')' Operator '|' Operator 'join' Name.Function '(' Operator "'-'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'baz' Name.Variable '|' Operator 'split' Name.Function '(' Operator "''" Literal.String.Single ',' Operator ' ' Text '2' Literal.Number ')' Operator '|' Operator 'join' Name.Function '(' Operator "'-'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '|' Operator 'split' Name.Function '(' Operator "','" Literal.String.Single ',' Operator ' ' Text '-' Operator '2' Literal.Number ')' Operator '|' Operator 'join' Name.Function '(' Operator "'-'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'foo\' => "one,two,three,four,five", \'baz\' => \'12345\',)\n--EXPECT--\none-two-three-four-five\none-two-three-four-five\none-two-three,four,five\n1-2-3-4-5\n12-34-5\none-two-three--TEST--\n"trim" filter\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '" I like Twig. "' Literal.String.Double '|' Operator 'trim' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'text' Name.Variable '|' Operator 'trim' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '" foo/"' Literal.String.Double '|' Operator 'trim' Name.Function '(' Operator '"/"' Literal.String.Double ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'text\' => " If you have some HTML it will be escaped. ")\n--EXPECT--\nI like Twig.\nIf you have some <strong>HTML</strong> it will be escaped.\n foo\n--TEST--\n"url_encode" filter for PHP < 5.4 and HHVM\n--CONDITION--\ndefined(\'PHP_QUERY_RFC3986\')\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '{' Operator 'foo' Name.Variable ':' Operator ' ' Text '"bar"' Literal.String.Double ',' Operator ' ' Text 'number' Name.Variable ':' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '"spéßi%l"' Literal.String.Double ':' Operator ' ' Text '"e%c0d@d"' Literal.String.Double ',' Operator ' ' Text '"spa ce"' Literal.String.Double ':' Operator ' ' Text '""' Literal.String.Double '}' Operator '|' Operator 'url_encode' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator 'foo' Name.Variable ':' Operator ' ' Text '"bar"' Literal.String.Double ',' Operator ' ' Text 'number' Name.Variable ':' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '"spéßi%l"' Literal.String.Double ':' Operator ' ' Text '"e%c0d@d"' Literal.String.Double ',' Operator ' ' Text '"spa ce"' Literal.String.Double ':' Operator ' ' Text '""' Literal.String.Double '}' Operator '|' Operator 'url_encode' Name.Function '|' Operator 'raw' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator '}' Operator '|' Operator 'url_encode' Name.Function '|' Operator 'default' Name.Function '(' Operator '"default"' Literal.String.Double ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'spéßi%le%c0d@dspa ce'" Literal.String.Single '|' Operator 'url_encode' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfoo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa%20ce=\nfoo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa%20ce=\ndefault\nsp%C3%A9%C3%9Fi%25le%25c0d%40dspa%20ce\n--TEST--\n"url_encode" filter\n--CONDITION--\ndefined(\'PHP_QUERY_RFC3986\')\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '{' Operator 'foo' Name.Variable ':' Operator ' ' Text '"bar"' Literal.String.Double ',' Operator ' ' Text 'number' Name.Variable ':' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '"spéßi%l"' Literal.String.Double ':' Operator ' ' Text '"e%c0d@d"' Literal.String.Double ',' Operator ' ' Text '"spa ce"' Literal.String.Double ':' Operator ' ' Text '""' Literal.String.Double '}' Operator '|' Operator 'url_encode' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator 'foo' Name.Variable ':' Operator ' ' Text '"bar"' Literal.String.Double ',' Operator ' ' Text 'number' Name.Variable ':' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '"spéßi%l"' Literal.String.Double ':' Operator ' ' Text '"e%c0d@d"' Literal.String.Double ',' Operator ' ' Text '"spa ce"' Literal.String.Double ':' Operator ' ' Text '""' Literal.String.Double '}' Operator '|' Operator 'url_encode' Name.Function '|' Operator 'raw' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '{' Operator '}' Operator '|' Operator 'url_encode' Name.Function '|' Operator 'default' Name.Function '(' Operator '"default"' Literal.String.Double ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'spéßi%le%c0d@dspa ce'" Literal.String.Single '|' Operator 'url_encode' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfoo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa%20ce=\nfoo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa%20ce=\ndefault\nsp%C3%A9%C3%9Fi%25le%25c0d%40dspa%20ce\n--TEST--\n"attribute" function\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'attribute' Name.Variable '(' Operator 'obj' Name.Variable ',' Operator ' ' Text 'method' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'attribute' Name.Variable '(' Operator 'array' Name.Variable ',' Operator ' ' Text 'item' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'attribute' Name.Variable '(' Operator 'obj' Name.Variable ',' Operator ' ' Text '"bar"' Literal.String.Double ',' Operator ' ' Text '[' Operator '"a"' Literal.String.Double ',' Operator ' ' Text '"b"' Literal.String.Double ']' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'attribute' Name.Variable '(' Operator 'obj' Name.Variable ',' Operator ' ' Text '"bar"' Literal.String.Double ',' Operator ' ' Text 'arguments' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'attribute' Name.Variable '(' Operator 'obj' Name.Variable ',' Operator ' ' Text 'method' Name.Variable ')' Operator ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'attribute' Name.Variable '(' Operator 'obj' Name.Variable ',' Operator ' ' Text 'nonmethod' Name.Variable ')' Operator ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'obj\' => new TwigTestFoo(), \'method\' => \'foo\', \'array\' => array(\'foo\' => \'bar\'), \'item\' => \'foo\', \'nonmethod\' => \'xxx\', \'arguments\' => array(\'a\', \'b\'))\n--EXPECT--\nfoo\nbar\nbar_a-b\nbar_a-b\nok\nko\n--TEST--\n"block" function\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text "'base.twig'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc 'BAR' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(base.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'bar'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc 'BAR_BASE' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nBARBAR\n--TEST--\n"constant" function\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'constant' Name.Variable '(' Operator "'DATE_W3C'" Literal.String.Single ')' Operator ' ' Text '==' Operator ' ' Text 'expect' Name.Variable ' ' Text '?' Operator ' ' Text "'true'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'false'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'constant' Name.Variable '(' Operator "'ARRAY_AS_PROPS'" Literal.String.Single ',' Operator ' ' Text 'object' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'expect\' => DATE_W3C, \'object\' => new ArrayObject(array(\'hi\')));\n--EXPECT--\ntrue\n2\n--TEST--\n"cycle" function\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'i' Name.Variable ' ' Text 'in' Keyword ' ' Text '0.' Literal.Number '.6' Literal.Number ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'cycle' Name.Variable '(' Operator 'array1' Name.Variable ',' Operator ' ' Text 'i' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '-' Other '{{' Comment.Preproc ' ' Text 'cycle' Name.Variable '(' Operator 'array2' Name.Variable ',' Operator ' ' Text 'i' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'array1\' => array(\'odd\', \'even\'), \'array2\' => array(\'apple\', \'orange\', \'citrus\'))\n--EXPECT--\nodd-apple\neven-orange\nodd-citrus\neven-apple\nodd-orange\neven-citrus\nodd-apple\n--TEST--\n"date" function\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'date' Name.Variable '(' Operator 'date' Name.Variable ',' Operator ' ' Text '"America/New_York"' Literal.String.Double ')' Operator '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s P'" Literal.String.Single ',' Operator ' ' Text 'false' Keyword.Pseudo ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date' Name.Variable '(' Operator 'timezone' Name.Variable '=' Operator '"America/New_York"' Literal.String.Double ',' Operator ' ' Text 'date' Name.Variable '=' Operator 'date' Name.Variable ')' Operator '|' Operator 'date' Name.Function '(' Operator "'d/m/Y H:i:s P'" Literal.String.Single ',' Operator ' ' Text 'false' Keyword.Pseudo ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\ndate_default_timezone_set(\'UTC\');\nreturn array(\'date\' => mktime(13, 45, 0, 10, 4, 2010))\n--EXPECT--\n04/10/2010 09:45:00 -04:00\n04/10/2010 09:45:00 -04:00\n--TEST--\n"date" function\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'date' Name.Variable '(' Operator ')' Operator ' ' Text '==' Operator ' ' Text 'date' Name.Variable '(' Operator "'now'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date' Name.Variable '(' Operator 'date1' Name.Variable ')' Operator ' ' Text '==' Operator ' ' Text 'date' Name.Variable '(' Operator "'2010-10-04 13:45'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date' Name.Variable '(' Operator 'date2' Name.Variable ')' Operator ' ' Text '==' Operator ' ' Text 'date' Name.Variable '(' Operator "'2010-10-04 13:45'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date' Name.Variable '(' Operator 'date3' Name.Variable ')' Operator ' ' Text '==' Operator ' ' Text 'date' Name.Variable '(' Operator "'2010-10-04 13:45'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date' Name.Variable '(' Operator 'date4' Name.Variable ')' Operator ' ' Text '==' Operator ' ' Text 'date' Name.Variable '(' Operator "'2010-10-04 13:45'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'date' Name.Variable '(' Operator 'date5' Name.Variable ')' Operator ' ' Text '==' Operator ' ' Text 'date' Name.Variable '(' Operator "'1964-01-02 03:04'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'OK'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'KO'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\ndate_default_timezone_set(\'UTC\');\nreturn array(\n \'date1\' => mktime(13, 45, 0, 10, 4, 2010),\n \'date2\' => new DateTime(\'2010-10-04 13:45\'),\n \'date3\' => \'2010-10-04 13:45\',\n \'date4\' => 1286199900, // DateTime::createFromFormat(\'Y-m-d H:i\', \'2010-10-04 13:45\', new DateTimeZone(\'UTC\'))->getTimestamp() -- A unixtimestamp is always GMT\n \'date5\' => -189291360, // DateTime::createFromFormat(\'Y-m-d H:i\', \'1964-01-02 03:04\', new DateTimeZone(\'UTC\'))->getTimestamp(),\n)\n--EXPECT--\nOK\nOK\nOK\nOK\nOK\nOK\n--TEST--\n"dump" function, xdebug is not loaded or xdebug <2.2-dev is loaded\n--CONDITION--\n!extension_loaded(\'xdebug\') || (($r = new ReflectionExtension(\'xdebug\')) && version_compare($r->getVersion(), \'2.2-dev\', \'<\'))\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'dump' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'foo\' => \'foo\', \'bar\' => \'bar\')\n--CONFIG--\nreturn array(\'debug\' => true, \'autoescape\' => false);\n--TEST--\n"dump" function\n--CONDITION--\n!extension_loaded(\'xdebug\')\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'dump' Name.Variable '(' Operator "'foo'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'dump' Name.Variable '(' Operator "'foo'" Literal.String.Single ',' Operator ' ' Text "'bar'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'foo\' => \'foo\', \'bar\' => \'bar\')\n--CONFIG--\nreturn array(\'debug\' => true, \'autoescape\' => false);\n--EXPECT--\nstring(3) "foo"\n\nstring(3) "foo"\nstring(3) "bar"\n--TEST--\ndynamic function\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'foo_path' Name.Variable '(' Operator "'bar'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'a_foo_b_bar' Name.Variable '(' Operator "'bar'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfoo/bar\na/b/bar\n--TEST--\n"include" function\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'tmp' Name.Variable ' ' Text '=' Operator ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ')' Operator ' ' Text '%}' Comment.Preproc '\n\nFOO' Other '{{' Comment.Preproc ' ' Text 'tmp' Name.Variable ' ' Text '}}' Comment.Preproc 'BAR\n--TEMPLATE(foo.twig)--\nFOOBAR\n--DATA--\nreturn array()\n--EXPECT--\nFOO\nFOOBARBAR\n--TEST--\n"include" function is safe for auto-escaping\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n

Test

\n--DATA--\nreturn array()\n--EXPECT--\n

Test

\n--TEST--\n"include" function\n--TEMPLATE--\nFOO\n' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ')' Operator ' ' Text '}}' Comment.Preproc '\n\nBAR\n--TEMPLATE(foo.twig)--\nFOOBAR\n--DATA--\nreturn array()\n--EXPECT--\nFOO\n\nFOOBAR\n\nBAR\n--TEST--\n"include" function allows expressions for the template to include\n--TEMPLATE--\nFOO\n' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator 'foo' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n\nBAR\n--TEMPLATE(foo.twig)--\nFOOBAR\n--DATA--\nreturn array(\'foo\' => \'foo.twig\')\n--EXPECT--\nFOO\n\nFOOBAR\n\nBAR\n--TEST--\n"include" function\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator '[' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text '"bar.twig"' Literal.String.Double ']' Operator ',' Operator ' ' Text 'ignore_missing' Name.Variable ' ' Text '=' Operator ' ' Text 'true' Keyword.Pseudo ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text 'ignore_missing' Name.Variable ' ' Text '=' Operator ' ' Text 'true' Keyword.Pseudo ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text 'ignore_missing' Name.Variable ' ' Text '=' Operator ' ' Text 'true' Keyword.Pseudo ',' Operator ' ' Text 'variables' Name.Variable ' ' Text '=' Operator ' ' Text '{' Operator '}' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text 'ignore_missing' Name.Variable ' ' Text '=' Operator ' ' Text 'true' Keyword.Pseudo ',' Operator ' ' Text 'variables' Name.Variable ' ' Text '=' Operator ' ' Text '{' Operator '}' Operator ',' Operator ' ' Text 'with_context' Name.Variable ' ' Text '=' Operator ' ' Text 'true' Keyword.Pseudo ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n--TEST--\n"include" function\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"base.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(base.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array();\n--EXCEPTION--\nTwig_Error_Loader: Template "foo.twig" is not defined in "base.twig" at line 3.\n--TEST--\n"include" function\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array();\n--EXCEPTION--\nTwig_Error_Loader: Template "foo.twig" is not defined in "index.twig" at line 2.\n--TEST--\n"include" tag sandboxed\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text 'sandboxed' Name.Variable ' ' Text '=' Operator ' ' Text 'true' Keyword.Pseudo ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '|' Operator 'e' Name.Function ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXCEPTION--\nTwig_Sandbox_SecurityError: Filter "e" is not allowed in "index.twig" at line 2.\n--TEST--\n"include" function accepts Twig_Template instance\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator 'foo' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc ' FOO\n--TEMPLATE(foo.twig)--\nBAR\n--DATA--\nreturn array(\'foo\' => $twig->loadTemplate(\'foo.twig\'))\n--EXPECT--\nBAR FOO\n--TEST--\n"include" function\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator '[' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text '"bar.twig"' Literal.String.Double ']' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc '-' Operator ' ' Text 'include' Name.Variable '(' Operator '[' Operator '"bar.twig"' Literal.String.Double ',' Operator ' ' Text '"foo.twig"' Literal.String.Double ']' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\nfoo\n--DATA--\nreturn array()\n--EXPECT--\nfoo\nfoo\n--TEST--\n"include" function accept variables and with_context\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc '-' Operator ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text 'with_context' Name.Variable ' ' Text '=' Operator ' ' Text 'false' Keyword.Pseudo ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc '-' Operator ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text '{' Operator "'foo1'" Literal.String.Single ':' Operator ' ' Text "'bar'" Literal.String.Single '}' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc '-' Operator ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text '{' Operator "'foo1'" Literal.String.Single ':' Operator ' ' Text "'bar'" Literal.String.Single '}' Operator ',' Operator ' ' Text 'with_context' Name.Variable ' ' Text '=' Operator ' ' Text 'false' Keyword.Pseudo ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'k' Name.Variable ',' Operator ' ' Text 'v' Name.Variable ' ' Text 'in' Keyword ' ' Text '_context' Name.Variable ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'k' Name.Variable ' ' Text '}}' Comment.Preproc ',' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'foo\' => \'bar\')\n--EXPECT--\nfoo,global,_parent,\nglobal,_parent,\nfoo,global,foo1,_parent,\nfoo1,global,_parent,\n--TEST--\n"include" function accept variables\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text '{' Operator "'foo'" Literal.String.Single ':' Operator ' ' Text "'bar'" Literal.String.Single '}' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc '-' Operator ' ' Text 'include' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text 'vars' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'vars\' => array(\'foo\' => \'bar\'))\n--EXPECT--\nbar\nbar\n--TEST--\n"max" function\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'max' Name.Variable '(' Operator '[' Operator '2' Literal.Number ',' Operator ' ' Text '1' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '5' Literal.Number ',' Operator ' ' Text '4' Literal.Number ']' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'max' Name.Variable '(' Operator '2' Literal.Number ',' Operator ' ' Text '1' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '5' Literal.Number ',' Operator ' ' Text '4' Literal.Number ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'max' Name.Variable '(' Operator '{' Operator '2' Literal.Number ':"two"' Literal.String.Double ',' Operator ' ' Text '1' Literal.Number ':"one"' Literal.String.Double ',' Operator ' ' Text '3' Literal.Number ':"three"' Literal.String.Double ',' Operator ' ' Text '5' Literal.Number ':"five"' Literal.String.Double ',' Operator ' ' Text '4' Literal.Number ':"for"' Literal.String.Double '}' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n5\n5\ntwo\n--TEST--\n"min" function\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'min' Name.Variable '(' Operator '2' Literal.Number ',' Operator ' ' Text '1' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '5' Literal.Number ',' Operator ' ' Text '4' Literal.Number ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'min' Name.Variable '(' Operator '[' Operator '2' Literal.Number ',' Operator ' ' Text '1' Literal.Number ',' Operator ' ' Text '3' Literal.Number ',' Operator ' ' Text '5' Literal.Number ',' Operator ' ' Text '4' Literal.Number ']' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'min' Name.Variable '(' Operator '{' Operator '2' Literal.Number ':"two"' Literal.String.Double ',' Operator ' ' Text '1' Literal.Number ':"one"' Literal.String.Double ',' Operator ' ' Text '3' Literal.Number ':"three"' Literal.String.Double ',' Operator ' ' Text '5' Literal.Number ':"five"' Literal.String.Double ',' Operator ' ' Text '4' Literal.Number ':"for"' Literal.String.Double '}' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n1\n1\nfive\n--TEST--\n"range" function\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'range' Name.Variable '(' Operator 'low' Name.Variable '=' Operator '0' Literal.Number '+' Operator '1' Literal.Number ',' Operator ' ' Text 'high' Name.Variable '=' Operator '1' Literal.Number '0' Literal.Number '+' Operator '0' Literal.Number ',' Operator ' ' Text 'step' Name.Variable '=' Operator '2' Literal.Number ')' Operator '|' Operator 'join' Name.Function '(' Operator "','" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n1,3,5,7,9\n--TEST--\n"block" function recursively called in a parent template\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"ordered_menu.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'label' Name.Variable ' ' Text '%}' Comment.Preproc '"' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '"' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'list' Name.Variable ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'class' Name.Variable ' ' Text '=' Operator ' ' Text "'b'" Literal.String.Single ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(ordered_menu.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"menu.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'list' Name.Variable ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'class' Name.Variable ' ' Text '=' Operator ' ' Text 'class' Name.Variable '|' Operator 'default' Name.Function '(' Operator "'a'" Literal.String.Single ')' Operator ' ' Text '%}' Comment.Preproc '
    ' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'children'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '
' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(menu.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"base.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'list' Name.Variable ' ' Text '%}' Comment.Preproc '' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'children' Name.Variable ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'currentItem' Name.Variable ' ' Text '=' Operator ' ' Text 'item' Name.Variable ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'currentItem' Name.Variable ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'item'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'item' Name.Variable ' ' Text '=' Operator ' ' Text 'currentItem' Name.Variable ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'item' Name.Variable ' ' Text '%}' Comment.Preproc '
  • ' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'item' Name.Variable ' ' Text 'is' Keyword ' ' Text 'not' Keyword ' ' Text 'iterable' Name.Function ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'label'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'else' Keyword ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'list'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '
  • ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'label' Name.Variable ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'item' Name.Variable ' ' Text '}}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'unknown'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(base.twig)--\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'list'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'item\' => array(\'1\', \'2\', array(\'3.1\', array(\'3.2.1\', \'3.2.2\'), \'3.4\')))\n--EXPECT--\n
    1. "1"
    2. "2"
      1. "3.1"
        1. "3.2.1"
        2. "3.2.2"
      2. "3.4"
    \n--TEST--\n"source" function\n--TEMPLATE--\nFOO\n' Other '{{' Comment.Preproc ' ' Text 'source' Name.Variable '(' Operator '"foo.twig"' Literal.String.Double ')' Operator ' ' Text '}}' Comment.Preproc '\n\nBAR\n--TEMPLATE(foo.twig)--\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '}}' Comment.Preproc '
    \n--DATA--\nreturn array()\n--EXPECT--\nFOO\n\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '}}' Comment.Preproc '
    \n\nBAR\n--TEST--\n"template_from_string" function\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text 'template_from_string' Name.Variable '(' Operator 'template' Name.Variable ')' Operator ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text 'template_from_string' Name.Variable '(' Operator '"Hello {{ name }}"' Literal.String.Double ')' Operator ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text 'template_from_string' Name.Variable '(' Operator '\'{% extends "parent.twig" %}{% block content %}Hello {{ name }}{% endblock %}\'' Literal.String.Single ')' Operator ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(parent.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'name\' => \'Fabien\', \'template\' => "Hello ' Other '{{' Comment.Preproc ' ' Text 'name' Name.Variable ' ' Text '}}' Comment.Preproc '")\n--EXPECT--\nHello Fabien\nHello Fabien\nHello Fabien\n--TEST--\nmacro\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'from' Keyword ' ' Text '_self' Name.Variable ' ' Text 'import' Name.Variable ' ' Text 'test' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'test' Name.Variable '(' Operator 'a' Name.Variable ',' Operator ' ' Text 'b' Name.Variable ' ' Text '=' Operator ' ' Text "'bar'" Literal.String.Single ')' Operator ' ' Text '-' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'a' Name.Variable ' ' Text '}}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'b' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc '- ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'test' Name.Variable '(' Operator "'foo'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'test' Name.Variable '(' Operator "'bar'" Literal.String.Single ',' Operator ' ' Text "'foo'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array();\n--EXPECT--\nfoobar\nbarfoo\n--TEST--\nmacro\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'import' Keyword ' ' Text '_self' Name.Variable ' ' Text 'as' Name.Variable ' ' Text 'macros' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'foo' Name.Variable '(' Operator 'data' Name.Variable ')' Operator ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'data' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'bar' Name.Variable '(' Operator ')' Operator ' ' Text '%}' Comment.Preproc '\n
    \n' Other '{%' Comment.Preproc ' ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'macros' Name.Variable '.foo' Name.Variable '(' Operator 'macros' Name.Variable '.bar' Name.Variable '(' Operator ')' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array();\n--EXPECT--\n
    \n--TEST--\nmacro\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'from' Keyword ' ' Text '_self' Name.Variable ' ' Text 'import' Name.Variable ' ' Text 'test' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'test' Name.Variable '(' Operator 'this' Name.Variable ')' Operator ' ' Text '-' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'this' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc '- ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'test' Name.Variable '(' Operator 'this' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc "\n--DATA--\nreturn array('this' => 'foo');\n--EXPECT--\nfoo\n--TEST--\nmacro\n--TEMPLATE--\n" Other '{%' Comment.Preproc ' ' Text 'import' Keyword ' ' Text '_self' Name.Variable ' ' Text 'as' Name.Variable ' ' Text 'test' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'from' Keyword ' ' Text '_self' Name.Variable ' ' Text 'import' Name.Variable ' ' Text 'test' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'test' Name.Variable '(' Operator 'a' Name.Variable ',' Operator ' ' Text 'b' Name.Variable ')' Operator ' ' Text '-' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'a' Name.Variable '|' Operator 'default' Name.Function '(' Operator "'a'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '
    \n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'b' Name.Variable '|' Operator 'default' Name.Function '(' Operator "'b'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '
    \n' Other '{%' Comment.Preproc '- ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'test' Name.Variable '.test' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'test' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'test' Name.Variable '.test' Name.Variable '(' Operator '1' Literal.Number ',' Operator ' ' Text '"c"' Literal.String.Double ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'test' Name.Variable '(' Operator '1' Literal.Number ',' Operator ' ' Text '"c"' Literal.String.Double ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array();\n--EXPECT--\na
    b
    \na
    b
    \n1
    c
    \n1
    c
    \n--TEST--\nmacro with a filter\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'import' Keyword ' ' Text '_self' Name.Variable ' ' Text 'as' Name.Variable ' ' Text 'test' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'test' Name.Variable '(' Operator ')' Operator ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'filter' Keyword ' ' Text 'escape' Name.Function ' ' Text '%}' Comment.Preproc 'foo
    ' Other '{%' Comment.Preproc ' ' Text 'endfilter' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'test' Name.Variable '.test' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array();\n--EXPECT--\nfoo<br />\n--TEST--\nTwig outputs 0 nodes correctly\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '}}' Comment.Preproc '0' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '}}' Comment.Preproc "\n--DATA--\nreturn array('foo' => 'foo')\n--EXPECT--\nfoo0foo\n--TEST--\nerror in twig extension\n--TEMPLATE--\n" Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.region' Name.Variable ' ' Text 'is' Keyword ' ' Text 'not' Keyword ' ' Text 'null' Name.Function ' ' Text '?' Operator ' ' Text 'object' Name.Variable '.regionChoices' Name.Variable '[' Operator 'object' Name.Variable '.region' Name.Variable ']' Operator ' ' Text '}}' Comment.Preproc "\n--EXPECT--\nhouse.region.s\n--TEST--\nTwig is able to deal with SimpleXMLElement instances as variables\n--CONDITION--\nversion_compare(phpversion(), '5.3.0', '>=')\n--TEMPLATE--\nHello '" Other '{{' Comment.Preproc ' ' Text 'images' Name.Variable '.image' Name.Variable '.0' Literal.Number '.group' Name.Variable ' ' Text '}}' Comment.Preproc "'!\n" Other '{{' Comment.Preproc ' ' Text 'images' Name.Variable '.image' Name.Variable '.0' Literal.Number '.group' Name.Variable '.attributes' Name.Variable '.myattr' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'images' Name.Variable '.children' Name.Variable '(' Operator ')' Operator '.image' Name.Variable '.count' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'image' Name.Variable ' ' Text 'in' Keyword ' ' Text 'images' Name.Variable ' ' Text '%}' Comment.Preproc '\n - ' Other '{{' Comment.Preproc ' ' Text 'image' Name.Variable '.group' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'images\' => new SimpleXMLElement(\'foobar\'))\n--EXPECT--\nHello \'foo\'!\nexample\n2\n - foo\n - bar\n--TEST--\nTwig does not confuse strings with integers in getAttribute()\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'hash' Name.Variable '[' Operator "'2e2'" Literal.String.Single ']' Operator ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'hash\' => array(\'2e2\' => \'works\'))\n--EXPECT--\nworks\n--TEST--\n"autoescape" tag applies escaping on its children\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '
    \n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '
    \n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text 'false' Keyword.Pseudo ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '
    \n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text 'true' Keyword.Pseudo ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '
    \n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text 'false' Keyword.Pseudo ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '
    \n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'var\' => \'
    \')\n--EXPECT--\n<br />
    \n<br />
    \n

    \n<br />
    \n

    \n--TEST--\n"autoescape" tag applies escaping on embedded blocks\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'var\' => \'
    \')\n--EXPECT--\n<br />\n--TEST--\n"autoescape" tag does not double-escape\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'escape' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'var\' => \'
    \')\n--EXPECT--\n<br />\n--TEST--\n"autoescape" tag applies escaping after calling functions\n--TEMPLATE--\n\nautoescape false\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text 'false' Keyword.Pseudo ' ' Text '%}' Comment.Preproc '\n\nsafe_br\n' Other '{{' Comment.Preproc ' ' Text 'safe_br' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n\nunsafe_br\n' Other '{{' Comment.Preproc ' ' Text 'unsafe_br' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc "\n\nautoescape 'html'\n" Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\nsafe_br\n' Other '{{' Comment.Preproc ' ' Text 'safe_br' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n\nunsafe_br\n' Other '{{' Comment.Preproc ' ' Text 'unsafe_br' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n\nunsafe_br()|raw\n' Other '{{' Comment.Preproc ' ' Text '(' Operator 'unsafe_br' Name.Variable '(' Operator ')' Operator ')' Operator '|' Operator 'raw' Name.Function ' ' Text '}}' Comment.Preproc '\n\nsafe_br()|escape\n' Other '{{' Comment.Preproc ' ' Text '(' Operator 'safe_br' Name.Variable '(' Operator ')' Operator ')' Operator '|' Operator 'escape' Name.Function ' ' Text '}}' Comment.Preproc '\n\nsafe_br()|raw\n' Other '{{' Comment.Preproc ' ' Text '(' Operator 'safe_br' Name.Variable '(' Operator ')' Operator ')' Operator '|' Operator 'raw' Name.Function ' ' Text '}}' Comment.Preproc '\n\nunsafe_br()|escape\n' Other '{{' Comment.Preproc ' ' Text '(' Operator 'unsafe_br' Name.Variable '(' Operator ')' Operator ')' Operator '|' Operator 'escape' Name.Function ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n\nautoescape js\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'js'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\nsafe_br\n' Other '{{' Comment.Preproc ' ' Text 'safe_br' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n\nautoescape false\n\nsafe_br\n
    \n\nunsafe_br\n
    \n\n\nautoescape \'html\'\n\nsafe_br\n
    \n\nunsafe_br\n<br />\n\nunsafe_br()|raw\n
    \n\nsafe_br()|escape\n<br />\n\nsafe_br()|raw\n
    \n\nunsafe_br()|escape\n<br />\n\n\nautoescape js\n\nsafe_br\n\\x3Cbr\\x20\\x2F\\x3E\n--TEST--\n"autoescape" tag does not apply escaping on literals\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\n1. Simple literal\n' Other '{{' Comment.Preproc ' ' Text '"
    "' Literal.String.Double ' ' Text '}}' Comment.Preproc '\n\n2. Conditional expression with only literals\n' Other '{{' Comment.Preproc ' ' Text 'true' Keyword.Pseudo ' ' Text '?' Operator ' ' Text '"
    "' Literal.String.Double ' ' Text ':' Operator ' ' Text '"
    "' Literal.String.Double ' ' Text '}}' Comment.Preproc '\n\n3. Conditional expression with a variable\n' Other '{{' Comment.Preproc ' ' Text 'true' Keyword.Pseudo ' ' Text '?' Operator ' ' Text '"
    "' Literal.String.Double ' ' Text ':' Operator ' ' Text 'someVar' Name.Variable ' ' Text '}}' Comment.Preproc '\n\n4. Nested conditionals with only literals\n' Other '{{' Comment.Preproc ' ' Text 'true' Keyword.Pseudo ' ' Text '?' Operator ' ' Text '(' Operator 'true' Keyword.Pseudo ' ' Text '?' Operator ' ' Text '"
    "' Literal.String.Double ' ' Text ':' Operator ' ' Text '"
    "' Literal.String.Double ')' Operator ' ' Text ':' Operator ' ' Text '"\\n"' Literal.String.Double ' ' Text '}}' Comment.Preproc '\n\n5. Nested conditionals with a variable\n' Other '{{' Comment.Preproc ' ' Text 'true' Keyword.Pseudo ' ' Text '?' Operator ' ' Text '(' Operator 'true' Keyword.Pseudo ' ' Text '?' Operator ' ' Text '"
    "' Literal.String.Double ' ' Text ':' Operator ' ' Text 'someVar' Name.Variable ')' Operator ' ' Text ':' Operator ' ' Text '"\\n"' Literal.String.Double ' ' Text '}}' Comment.Preproc '\n\n6. Nested conditionals with a variable marked safe\n' Other '{{' Comment.Preproc ' ' Text 'true' Keyword.Pseudo ' ' Text '?' Operator ' ' Text '(' Operator 'true' Keyword.Pseudo ' ' Text '?' Operator ' ' Text '"
    "' Literal.String.Double ' ' Text ':' Operator ' ' Text 'someVar' Name.Variable '|' Operator 'raw' Name.Function ')' Operator ' ' Text ':' Operator ' ' Text '"\\n"' Literal.String.Double ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n\n1. Simple literal\n
    \n\n2. Conditional expression with only literals\n
    \n\n3. Conditional expression with a variable\n<br />\n\n4. Nested conditionals with only literals\n
    \n\n5. Nested conditionals with a variable\n<br />\n\n6. Nested conditionals with a variable marked safe\n
    \n--TEST--\n"autoescape" tags can be nested at will\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text 'false' Keyword.Pseudo ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'var\' => \'
    \')\n--EXPECT--\n<br />\n <br />\n
    \n <br />\n
    \n <br />\n<br />\n--TEST--\n"autoescape" tag applies escaping to object method calls\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'user' Name.Variable '.name' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'user' Name.Variable '.name' Name.Variable '|' Operator 'lower' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'user' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n--EXPECT--\nFabien<br />\nfabien<br />\nFabien<br />\n--TEST--\n"autoescape" tag does not escape when raw is used as a filter\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'raw' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'var\' => \'
    \')\n--EXPECT--\n
    \n--TEST--\n"autoescape" tag accepts an escaping strategy\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text 'true' Keyword.Pseudo ' ' Text 'js' Name.Variable ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text 'true' Keyword.Pseudo ' ' Text 'html' Name.Variable ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'js'" Literal.String.Single ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'var\' => \'
    "\')\n--EXPECT--\n\\x3Cbr\\x20\\x2F\\x3E\\x22\n<br />"\n\\x3Cbr\\x20\\x2F\\x3E\\x22\n<br />"\n--TEST--\nescape types\n--TEMPLATE--\n\n1. autoescape \'html\' |escape(\'js\')\n\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc "\n\n2. autoescape 'html' |escape('js')\n\n" Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc "\n\n3. autoescape 'js' |escape('js')\n\n" Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'js'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n\n4. no escape\n\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text 'false' Keyword.Pseudo ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc "\n\n5. |escape('js')|escape('html')\n\n" Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text 'false' Keyword.Pseudo ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc "\n\n6. autoescape 'html' |escape('js')|escape('html')\n\n" Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n\n--DATA--\nreturn array(\'msg\' => "<>\\n\'\\"")\n--EXPECT--\n\n1. autoescape \'html\' |escape(\'js\')\n\n\n\n2. autoescape \'html\' |escape(\'js\')\n\n\n\n3. autoescape \'js\' |escape(\'js\')\n\n\n\n4. no escape\n\n\n\n5. |escape(\'js\')|escape(\'html\')\n\n\n\n6. autoescape \'html\' |escape(\'js\')|escape(\'html\')\n\n\n\n--TEST--\n"autoescape" tag do not applies escaping on filter arguments\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'nl2br' Name.Function '(' Operator '"
    "' Literal.String.Double ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'nl2br' Name.Function '(' Operator '"
    "' Literal.String.Double '|' Operator 'escape' Name.Function ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'nl2br' Name.Function '(' Operator 'sep' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'nl2br' Name.Function '(' Operator 'sep' Name.Variable '|' Operator 'raw' Name.Function ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'nl2br' Name.Function '(' Operator 'sep' Name.Variable '|' Operator 'escape' Name.Function ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'var\' => "\\nTwig", \'sep\' => \'
    \')\n--EXPECT--\n<Fabien>
    \nTwig\n<Fabien><br />\nTwig\n<Fabien>
    \nTwig\n<Fabien>
    \nTwig\n<Fabien><br />\nTwig\n--TEST--\n"autoescape" tag applies escaping after calling filters\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc "\n\n(escape_and_nl2br is an escaper filter)\n\n1. Don't escape escaper filter output\n( var is escaped by |escape_and_nl2br, line-breaks are added, \n the output is not escaped )\n" Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'escape_and_nl2br' Name.Function ' ' Text '}}' Comment.Preproc "\n\n2. Don't escape escaper filter output\n( var is escaped by |escape_and_nl2br, line-breaks are added, \n the output is not escaped, |raw is redundant )\n" Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'escape_and_nl2br' Name.Function '|' Operator 'raw' Name.Function ' ' Text '}}' Comment.Preproc '\n\n3. Explicit escape\n( var is escaped by |escape_and_nl2br, line-breaks are added,\n the output is explicitly escaped by |escape )\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'escape_and_nl2br' Name.Function '|' Operator 'escape' Name.Function ' ' Text '}}' Comment.Preproc '\n\n4. Escape non-escaper filter output\n( var is upper-cased by |upper,\n the output is auto-escaped )\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'upper' Name.Function ' ' Text '}}' Comment.Preproc '\n\n5. Escape if last filter is not an escaper\n( var is escaped by |escape_and_nl2br, line-breaks are added,\n the output is upper-cased by |upper,\n the output is auto-escaped as |upper is not an escaper )\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'escape_and_nl2br' Name.Function '|' Operator 'upper' Name.Function ' ' Text '}}' Comment.Preproc "\n\n6. Don't escape escaper filter output\n( var is upper cased by upper,\n the output is escaped by |escape_and_nl2br, line-breaks are added,\n the output is not escaped as |escape_and_nl2br is an escaper )\n" Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'upper' Name.Function '|' Operator 'escape_and_nl2br' Name.Function ' ' Text '}}' Comment.Preproc '\n\n7. Escape if last filter is not an escaper\n( the output of |format is "" ~ var ~ "",\n the output is auto-escaped )\n' Other '{{' Comment.Preproc ' ' Text '"%s"' Literal.String.Double '|' Operator 'format' Name.Function '(' Operator 'var' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n\n8. Escape if last filter is not an escaper\n( the output of |format is "" ~ var ~ "",\n |raw is redundant,\n the output is auto-escaped )\n' Other '{{' Comment.Preproc ' ' Text '"%s"' Literal.String.Double '|' Operator 'raw' Name.Function '|' Operator 'format' Name.Function '(' Operator 'var' Name.Variable ')' Operator ' ' Text '}}' Comment.Preproc '\n\n9. Don\'t escape escaper filter output\n( the output of |format is "" ~ var ~ "",\n the output is not escaped due to |raw filter at the end )\n' Other '{{' Comment.Preproc ' ' Text '"%s"' Literal.String.Double '|' Operator 'format' Name.Function '(' Operator 'var' Name.Variable ')' Operator '|' Operator 'raw' Name.Function ' ' Text '}}' Comment.Preproc '\n\n10. Don\'t escape escaper filter output\n( the output of |format is "" ~ var ~ "",\n the output is not escaped due to |raw filter at the end,\n the |raw filter on var is redundant )\n' Other '{{' Comment.Preproc ' ' Text '"%s"' Literal.String.Double '|' Operator 'format' Name.Function '(' Operator 'var' Name.Variable '|' Operator 'raw' Name.Function ')' Operator '|' Operator 'raw' Name.Function ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'var\' => "\\nTwig")\n--EXPECT--\n\n(escape_and_nl2br is an escaper filter)\n\n1. Don\'t escape escaper filter output\n( var is escaped by |escape_and_nl2br, line-breaks are added, \n the output is not escaped )\n<Fabien>
    \nTwig\n\n2. Don\'t escape escaper filter output\n( var is escaped by |escape_and_nl2br, line-breaks are added, \n the output is not escaped, |raw is redundant )\n<Fabien>
    \nTwig\n\n3. Explicit escape\n( var is escaped by |escape_and_nl2br, line-breaks are added,\n the output is explicitly escaped by |escape )\n&lt;Fabien&gt;<br />\nTwig\n\n4. Escape non-escaper filter output\n( var is upper-cased by |upper,\n the output is auto-escaped )\n<FABIEN>\nTWIG\n\n5. Escape if last filter is not an escaper\n( var is escaped by |escape_and_nl2br, line-breaks are added,\n the output is upper-cased by |upper,\n the output is auto-escaped as |upper is not an escaper )\n&LT;FABIEN&GT;<BR />\nTWIG\n\n6. Don\'t escape escaper filter output\n( var is upper cased by upper,\n the output is escaped by |escape_and_nl2br, line-breaks are added,\n the output is not escaped as |escape_and_nl2br is an escaper )\n<FABIEN>
    \nTWIG\n\n7. Escape if last filter is not an escaper\n( the output of |format is "" ~ var ~ "",\n the output is auto-escaped )\n<b><Fabien>\nTwig</b>\n\n8. Escape if last filter is not an escaper\n( the output of |format is "" ~ var ~ "",\n |raw is redundant,\n the output is auto-escaped )\n<b><Fabien>\nTwig</b>\n\n9. Don\'t escape escaper filter output\n( the output of |format is "" ~ var ~ "",\n the output is not escaped due to |raw filter at the end )\n\nTwig\n\n10. Don\'t escape escaper filter output\n( the output of |format is "" ~ var ~ "",\n the output is not escaped due to |raw filter at the end,\n the |raw filter on var is redundant )\n\nTwig\n--TEST--\n"autoescape" tag applies escaping after calling filters, and before calling pre_escape filters\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\n(nl2br is pre_escaped for "html" and declared safe for "html")\n\n1. Pre-escape and don\'t post-escape\n( var|escape|nl2br )\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'nl2br' Name.Function ' ' Text '}}' Comment.Preproc "\n\n2. Don't double-pre-escape\n( var|escape|nl2br )\n" Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'escape' Name.Function '|' Operator 'nl2br' Name.Function ' ' Text '}}' Comment.Preproc "\n\n3. Don't escape safe values\n( var|raw|nl2br )\n" Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'raw' Name.Function '|' Operator 'nl2br' Name.Function ' ' Text '}}' Comment.Preproc "\n\n4. Don't escape safe values\n( var|escape|nl2br|nl2br )\n" Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'nl2br' Name.Function '|' Operator 'nl2br' Name.Function ' ' Text '}}' Comment.Preproc '\n\n5. Re-escape values that are escaped for an other contexts\n( var|escape_something|escape|nl2br )\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'escape_something' Name.Function '|' Operator 'nl2br' Name.Function ' ' Text '}}' Comment.Preproc '\n\n6. Still escape when using filters not declared safe\n( var|escape|nl2br|upper|escape )\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'nl2br' Name.Function '|' Operator 'upper' Name.Function ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'var\' => "\\nTwig")\n--EXPECT--\n\n(nl2br is pre_escaped for "html" and declared safe for "html")\n\n1. Pre-escape and don\'t post-escape\n( var|escape|nl2br )\n<Fabien>
    \nTwig\n\n2. Don\'t double-pre-escape\n( var|escape|nl2br )\n<Fabien>
    \nTwig\n\n3. Don\'t escape safe values\n( var|raw|nl2br )\n
    \nTwig\n\n4. Don\'t escape safe values\n( var|escape|nl2br|nl2br )\n<Fabien>

    \nTwig\n\n5. Re-escape values that are escaped for an other contexts\n( var|escape_something|escape|nl2br )\n<FABIEN>
    \nTWIG\n\n6. Still escape when using filters not declared safe\n( var|escape|nl2br|upper|escape )\n&LT;FABIEN&GT;<BR />\nTWIG\n\n--TEST--\n"autoescape" tag handles filters preserving the safety\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'autoescape' Keyword ' ' Text "'html'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\n(preserves_safety is preserving safety for "html")\n\n1. Unsafe values are still unsafe\n( var|preserves_safety|escape )\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'preserves_safety' Name.Function ' ' Text '}}' Comment.Preproc '\n\n2. Safe values are still safe\n( var|escape|preserves_safety )\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'escape' Name.Function '|' Operator 'preserves_safety' Name.Function ' ' Text '}}' Comment.Preproc '\n\n3. Re-escape values that are escaped for an other contexts\n( var|escape_something|preserves_safety|escape )\n' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'escape_something' Name.Function '|' Operator 'preserves_safety' Name.Function ' ' Text '}}' Comment.Preproc '\n\n4. Still escape when using filters not declared safe\n( var|escape|preserves_safety|replace(' Other '{' Other "'FABIEN': 'FABPOT'})|escape )\n" Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable '|' Operator 'escape' Name.Function '|' Operator 'preserves_safety' Name.Function '|' Operator 'replace' Name.Function '(' Operator '{' Operator "'FABIEN'" Literal.String.Single ':' Operator ' ' Text "'FABPOT'" Literal.String.Single '}' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endautoescape' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'var\' => "\\nTwig")\n--EXPECT--\n\n(preserves_safety is preserving safety for "html")\n\n1. Unsafe values are still unsafe\n( var|preserves_safety|escape )\n<FABIEN>\nTWIG\n\n2. Safe values are still safe\n( var|escape|preserves_safety )\n<FABIEN>\nTWIG\n\n3. Re-escape values that are escaped for an other contexts\n( var|escape_something|preserves_safety|escape )\n<FABIEN>\nTWIG\n\n4. Still escape when using filters not declared safe\n( var|escape|preserves_safety|replace(' Other '{' Other '\'FABIEN\': \'FABPOT\'})|escape )\n&LT;FABPOT&GT;\nTWIG\n\n--TEST--\n"block" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'title1' Name.Variable ' ' Text '%}' Comment.Preproc 'FOO' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'title2' Name.Variable ' ' Text 'foo' Name.Variable '|' Operator 'lower' Name.Function ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'foo\' => \'bar\')\n--EXPECT--\nFOObar\n--TEST--\n"block" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXCEPTION--\nTwig_Error_Syntax: The block \'content\' has already been defined line 2 in "index.twig" at line 3\n--TEST--\n"§" special chars in a block name\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text '§' Name.Variable ' ' Text '%}' Comment.Preproc '\n§\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '§' Name.Variable ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n§\n--TEST--\n"embed" tag\n--TEMPLATE--\nFOO\n' Other '{%' Comment.Preproc ' ' Text 'embed' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n block1extended\n ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endembed' Keyword ' ' Text '%}' Comment.Preproc '\n\nBAR\n--TEMPLATE(foo.twig)--\nA\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '\n block1\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\nB\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c2' Name.Variable ' ' Text '%}' Comment.Preproc '\n block2\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\nC\n--DATA--\nreturn array()\n--EXPECT--\nFOO\n\nA\n block1\n\n block1extended\n B\n block2\nC\nBAR\n--TEST--\n"embed" tag\n--TEMPLATE(index.twig)--\nFOO\n' Other '{%' Comment.Preproc ' ' Text 'embed' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'nothing' Name.Variable ' ' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endembed' Keyword ' ' Text '%}' Comment.Preproc '\nBAR\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXCEPTION--\nTwig_Error_Runtime: Variable "nothing" does not exist in "index.twig" at line 5\n--TEST--\n"embed" tag\n--TEMPLATE--\nFOO\n' Other '{%' Comment.Preproc ' ' Text 'embed' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n block1extended\n ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endembed' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'embed' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n block1extended\n ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endembed' Keyword ' ' Text '%}' Comment.Preproc '\n\nBAR\n--TEMPLATE(foo.twig)--\nA\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '\n block1\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\nB\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c2' Name.Variable ' ' Text '%}' Comment.Preproc '\n block2\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\nC\n--DATA--\nreturn array()\n--EXPECT--\nFOO\n\nA\n block1\n\n block1extended\n B\n block2\nC\n\nA\n block1\n\n block1extended\n B\n block2\nC\nBAR\n--TEST--\n"embed" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'embed' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'embed' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n block1extended\n ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endembed' Keyword ' ' Text '%}' Comment.Preproc '\n\n ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endembed' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\nA\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '\n block1\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\nB\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c2' Name.Variable ' ' Text '%}' Comment.Preproc '\n block2\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\nC\n--DATA--\nreturn array()\n--EXPECT--\nA\n block1\n\n \nA\n block1\n\n block1extended\n B\n block2\nC\n B\n block2\nC\n--TEST--\n"embed" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"base.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n blockc1baseextended\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c2' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n\n ' Other '{%' Comment.Preproc ' ' Text 'embed' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n block1extended\n ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endembed' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(base.twig)--\nA\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '\n blockc1base\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c2' Name.Variable ' ' Text '%}' Comment.Preproc '\n blockc2base\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\nB\n--TEMPLATE(foo.twig)--\nA\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c1' Name.Variable ' ' Text '%}' Comment.Preproc '\n block1\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\nB\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'c2' Name.Variable ' ' Text '%}' Comment.Preproc '\n block2\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\nC\n--DATA--\nreturn array()\n--EXPECT--\nA\n blockc1base\n\n blockc1baseextended\n blockc2base\n\n\n \nA\n block1\n\n block1extended\n B\n block2\nCB--TEST--\n"filter" tag applies a filter on its children\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'filter' Keyword ' ' Text 'upper' Name.Function ' ' Text '%}' Comment.Preproc '\nSome text with a ' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfilter' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'var\' => \'var\')\n--EXPECT--\nSOME TEXT WITH A VAR\n--TEST--\n"filter" tag applies a filter on its children\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'filter' Keyword ' ' Text 'json_encode' Name.Function '|' Operator 'raw' Name.Function ' ' Text '%}' Comment.Preproc 'test' Other '{%' Comment.Preproc ' ' Text 'endfilter' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n"test"\n--TEST--\n"filter" tags accept multiple chained filters\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'filter' Keyword ' ' Text 'lower' Name.Function '|' Operator 'title' Name.Function ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfilter' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'var\' => \'VAR\')\n--EXPECT--\n Var\n--TEST--\n"filter" tags can be nested at will\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'filter' Keyword ' ' Text 'lower' Name.Function '|' Operator 'title' Name.Function ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'filter' Keyword ' ' Text 'upper' Name.Function ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endfilter' Keyword ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'var' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfilter' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'var\' => \'var\')\n--EXPECT--\n Var\n Var\n Var\n--TEST--\n"filter" tag applies the filter on "for" tags\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'filter' Keyword ' ' Text 'upper' Name.Function ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'item' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfilter' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\'))\n--EXPECT--\nA\nB\n--TEST--\n"filter" tag applies the filter on "if" tags\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'filter' Keyword ' ' Text 'upper' Name.Function ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '|' Operator 'join' Name.Function '(' Operator "', '" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'items' Name.Variable '.3' Literal.Number ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '%}' Comment.Preproc '\nFOO\n' Other '{%' Comment.Preproc ' ' Text 'else' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '.1' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'items' Name.Variable '.3' Literal.Number ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '%}' Comment.Preproc '\nFOO\n' Other '{%' Comment.Preproc ' ' Text 'elseif' Keyword ' ' Text 'items' Name.Variable '.1' Literal.Number ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'items' Name.Variable '.0' Literal.Number ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endfilter' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\'))\n--EXPECT--\nA, B\n\nB\n\nA\n--TEST--\n"for" tag takes a condition\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'i' Name.Variable ' ' Text 'in' Keyword ' ' Text '1.' Literal.Number '.5' Literal.Number ' ' Text 'if' Name.Variable ' ' Text 'i' Name.Variable ' ' Text 'is' Keyword ' ' Text 'odd' Name.Function ' ' Text '-' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.index' Name.Variable ' ' Text '}}' Comment.Preproc '.' Other '{{' Comment.Preproc ' ' Text 'i' Name.Variable ' ' Text '}}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '.bar' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'foo\' => array(\'bar\' => \'X\'))\n--CONFIG--\nreturn array(\'strict_variables\' => false)\n--EXPECT--\n1.1X\n2.3X\n3.5X\n--TEST--\n"for" tag keeps the context safe\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'item' Name.Variable ' ' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'item' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\'))\n--EXPECT--\n * a\n * b\n * a\n * a\n * b\n * b\n--TEST--\n"for" tag can use an "else" clause\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'item' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'else' Keyword ' ' Text '%}' Comment.Preproc '\n no item\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\'))\n--EXPECT--\n * a\n * b\n--DATA--\nreturn array(\'items\' => array())\n--EXPECT--\n no item\n--DATA--\nreturn array()\n--CONFIG--\nreturn array(\'strict_variables\' => false)\n--EXPECT--\n no item\n--TEST--\n"for" tag does not reset inner variables\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'i' Name.Variable ' ' Text 'in' Keyword ' ' Text '1.' Literal.Number '.2' Literal.Number ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'j' Name.Variable ' ' Text 'in' Keyword ' ' Text '0.' Literal.Number '.2' Literal.Number ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc 'k' Name.Variable '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'k' Name.Variable ' ' Text '=' Operator ' ' Text 'k' Name.Variable '+' Operator '1' Literal.Number ' ' Text '%}' Comment.Preproc ' ' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.parent' Name.Variable '.loop' Name.Variable '.index' Name.Variable ' ' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'k\' => 0)\n--EXPECT--\n 0 1\n 1 1\n 2 1\n 3 2\n 4 2\n 5 2\n--TEST--\n"for" tag can iterate over keys and values\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'key' Name.Variable ',' Operator ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'key' Name.Variable ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text 'item' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\'))\n--EXPECT--\n * 0/a\n * 1/b\n--TEST--\n"for" tag can iterate over keys\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'key' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable '|' Operator 'keys' Name.Function ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'key' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\'))\n--EXPECT--\n * 0\n * 1\n--TEST--\n"for" tag adds a loop variable to the context locally\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'loop' Name.Builtin ' ' Text 'is' Keyword ' ' Text 'not' Keyword ' ' Text 'defined' Name.Function ' ' Text '%}' Comment.Preproc 'WORKS' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array())\n--EXPECT--\nWORKS\n--TEST--\n"for" tag adds a loop variable to the context\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.index' Name.Variable ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.index0' Name.Variable ' ' Text '}}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.revindex' Name.Variable ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.revindex0' Name.Variable ' ' Text '}}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.first' Name.Variable ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.last' Name.Variable ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.length' Name.Variable ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\'))\n--EXPECT--\n * 1/0\n * 2/1\n * 1//2\n\n * 2/1\n * 1/0\n * /1/2\n--TEST--\n"for" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'i' Name.Variable ',' Operator ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text 'if' Name.Variable ' ' Text 'loop' Name.Builtin '.last' Name.Variable ' ' Text '>' Operator ' ' Text '0' Literal.Number ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\'))\n--EXCEPTION--\nTwig_Error_Syntax: The "loop" variable cannot be used in a looping condition in "index.twig" at line 2\n--TEST--\n"for" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'i' Name.Variable ',' Operator ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text 'if' Name.Variable ' ' Text 'i' Name.Variable ' ' Text '>' Operator ' ' Text '0' Literal.Number ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.last' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\'))\n--EXCEPTION--\nTwig_Error_Syntax: The "loop.last" variable is not defined when looping with a condition in "index.twig" at line 3\n--TEST--\n"for" tag can use an "else" clause\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items1' Name.Variable ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'item' Name.Variable ' ' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'else' Keyword ' ' Text '%}' Comment.Preproc '\n no ' Other '{{' Comment.Preproc ' ' Text 'item' Name.Variable ' ' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'else' Keyword ' ' Text '%}' Comment.Preproc '\n no item1\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\', \'b\'), \'items1\' => array())\n--EXPECT--\nno a\n no b\n--TEST--\n"for" tag iterates over iterable and countable objects\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'item' Name.Variable ' ' Text '}}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.index' Name.Variable ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.index0' Name.Variable ' ' Text '}}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.revindex' Name.Variable ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.revindex0' Name.Variable ' ' Text '}}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.first' Name.Variable ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.last' Name.Variable ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.length' Name.Variable ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'key' Name.Variable ',' Operator ' ' Text 'value' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'key' Name.Variable ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text 'value' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'key' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable '|' Operator 'keys' Name.Function ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'key' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nclass ItemsIteratorCountable implements Iterator, Countable\n' Other '{' Other "\n protected $values = array('foo' => 'bar', 'bar' => 'foo');\n public function current() " Other '{' Other ' return current($this->values); }\n public function key() ' Other '{' Other ' return key($this->values); }\n public function next() ' Other '{' Other ' return next($this->values); }\n public function rewind() ' Other '{' Other ' return reset($this->values); }\n public function valid() ' Other '{' Other ' return false !== current($this->values); }\n public function count() ' Other '{' Other ' return count($this->values); }\n}\nreturn array(\'items\' => new ItemsIteratorCountable())\n--EXPECT--\n * bar\n * 1/0\n * 2/1\n * 1//2\n\n * foo\n * 2/1\n * 1/0\n * /1/2\n\n\n * foo/bar\n * bar/foo\n\n * foo\n * bar\n--TEST--\n"for" tag iterates over iterable objects\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'item' Name.Variable ' ' Text '}}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.index' Name.Variable ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.index0' Name.Variable ' ' Text '}}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.first' Name.Variable ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'key' Name.Variable ',' Operator ' ' Text 'value' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'key' Name.Variable ' ' Text '}}' Comment.Preproc '/' Other '{{' Comment.Preproc ' ' Text 'value' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'key' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable '|' Operator 'keys' Name.Function ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'key' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nclass ItemsIterator implements Iterator\n' Other '{' Other "\n protected $values = array('foo' => 'bar', 'bar' => 'foo');\n public function current() " Other '{' Other ' return current($this->values); }\n public function key() ' Other '{' Other ' return key($this->values); }\n public function next() ' Other '{' Other ' return next($this->values); }\n public function rewind() ' Other '{' Other ' return reset($this->values); }\n public function valid() ' Other '{' Other ' return false !== current($this->values); }\n}\nreturn array(\'items\' => new ItemsIterator())\n--EXPECT--\n * bar\n * 1/0\n * 1\n\n * foo\n * 2/1\n * \n\n\n * foo/bar\n * bar/foo\n\n * foo\n * bar\n--TEST--\n"for" tags can be nested\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'key' Name.Variable ',' Operator ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n* ' Other '{{' Comment.Preproc ' ' Text 'key' Name.Variable ' ' Text '}}' Comment.Preproc ' (' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.length' Name.Variable ' ' Text '}}' Comment.Preproc '):\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'value' Name.Variable ' ' Text 'in' Keyword ' ' Text 'item' Name.Variable ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'value' Name.Variable ' ' Text '}}' Comment.Preproc ' (' Other '{{' Comment.Preproc ' ' Text 'loop' Name.Builtin '.length' Name.Variable ' ' Text '}}' Comment.Preproc ')\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'items\' => array(\'a\' => array(\'a1\', \'a2\', \'a3\'), \'b\' => array(\'b1\')))\n--EXPECT--\n* a (2):\n * a1 (3)\n * a2 (3)\n * a3 (3)\n* b (2):\n * b1 (1)\n--TEST--\n"for" tag iterates over item values\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'items' Name.Variable ' ' Text '%}' Comment.Preproc '\n * ' Other '{{' Comment.Preproc ' ' Text 'item' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc "\n--DATA--\nreturn array('items' => array('a', 'b'))\n--EXPECT--\n * a\n * b\n--TEST--\nglobal variables\n--TEMPLATE--\n" Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"included.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'from' Keyword ' ' Text '"included.twig"' Literal.String.Double ' ' Text 'import' Name.Variable ' ' Text 'foobar' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foobar' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(included.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'foobar' Name.Variable '(' Operator ')' Operator ' ' Text '%}' Comment.Preproc '\ncalled foobar\n' Other '{%' Comment.Preproc ' ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array();\n--EXPECT--\ncalled foobar\n--TEST--\n"if" creates a condition\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'a' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'a' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'elseif' Keyword ' ' Text 'b' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'b' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'else' Keyword ' ' Text '%}' Comment.Preproc '\n NOTHING\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'a\' => \'a\')\n--EXPECT--\n a\n--DATA--\nreturn array(\'b\' => \'b\')\n--EXPECT--\n b\n--DATA--\nreturn array()\n--EXPECT--\n NOTHING\n--TEST--\n"if" takes an expression as a test\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'a' Name.Variable ' ' Text '<' Operator ' ' Text '2' Literal.Number ' ' Text '%}' Comment.Preproc '\n A1\n' Other '{%' Comment.Preproc ' ' Text 'elseif' Keyword ' ' Text 'a' Name.Variable ' ' Text '>' Operator ' ' Text '1' Literal.Number '0' Literal.Number ' ' Text '%}' Comment.Preproc '\n A2\n' Other '{%' Comment.Preproc ' ' Text 'else' Keyword ' ' Text '%}' Comment.Preproc '\n A3\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'a\' => 1)\n--EXPECT--\n A1\n--DATA--\nreturn array(\'a\' => 12)\n--EXPECT--\n A2\n--DATA--\nreturn array(\'a\' => 7)\n--EXPECT--\n A3\n--TEST--\n"include" tag\n--TEMPLATE--\nFOO\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\nBAR\n--TEMPLATE(foo.twig)--\nFOOBAR\n--DATA--\nreturn array()\n--EXPECT--\nFOO\n\nFOOBAR\nBAR\n--TEST--\n"include" tag allows expressions for the template to include\n--TEMPLATE--\nFOO\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n\nBAR\n--TEMPLATE(foo.twig)--\nFOOBAR\n--DATA--\nreturn array(\'foo\' => \'foo.twig\')\n--EXPECT--\nFOO\n\nFOOBAR\nBAR\n--TEST--\n"include" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '[' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text '"bar.twig"' Literal.String.Double ']' Operator ' ' Text 'ignore' Name.Variable ' ' Text 'missing' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text 'ignore' Name.Variable ' ' Text 'missing' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text 'ignore' Name.Variable ' ' Text 'missing' Name.Variable ' ' Text 'with' Name.Variable ' ' Text '{' Operator '}' Operator ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text 'ignore' Name.Variable ' ' Text 'missing' Name.Variable ' ' Text 'with' Name.Variable ' ' Text '{' Operator '}' Operator ' ' Text 'only' Name.Variable ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n--TEST--\n"include" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"base.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(base.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array();\n--EXCEPTION--\nTwig_Error_Loader: Template "foo.twig" is not defined in "base.twig" at line 3.\n--TEST--\n"include" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array();\n--EXCEPTION--\nTwig_Error_Loader: Template "foo.twig" is not defined in "index.twig" at line 2.\n--TEST--\n"include" tag accept variables and only\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text 'only' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text 'with' Name.Variable ' ' Text '{' Operator "'foo1'" Literal.String.Single ':' Operator ' ' Text "'bar'" Literal.String.Single '}' Operator ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text 'with' Name.Variable ' ' Text '{' Operator "'foo1'" Literal.String.Single ':' Operator ' ' Text "'bar'" Literal.String.Single '}' Operator ' ' Text 'only' Name.Variable ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'k' Name.Variable ',' Operator ' ' Text 'v' Name.Variable ' ' Text 'in' Keyword ' ' Text '_context' Name.Variable ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'k' Name.Variable ' ' Text '}}' Comment.Preproc ',' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'foo\' => \'bar\')\n--EXPECT--\nfoo,global,_parent,\nglobal,_parent,\nfoo,global,foo1,_parent,\nfoo1,global,_parent,\n--TEST--\n"include" tag accepts Twig_Template instance\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc ' FOO\n--TEMPLATE(foo.twig)--\nBAR\n--DATA--\nreturn array(\'foo\' => $twig->loadTemplate(\'foo.twig\'))\n--EXPECT--\nBAR FOO\n--TEST--\n"include" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '[' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text '"bar.twig"' Literal.String.Double ']' Operator ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '[' Operator '"bar.twig"' Literal.String.Double ',' Operator ' ' Text '"foo.twig"' Literal.String.Double ']' Operator ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\nfoo\n--DATA--\nreturn array()\n--EXPECT--\nfoo\nfoo\n--TEST--\n"include" tag accept variables\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text 'with' Name.Variable ' ' Text '{' Operator "'foo'" Literal.String.Single ':' Operator ' ' Text "'bar'" Literal.String.Single '}' Operator ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text 'with' Name.Variable ' ' Text 'vars' Name.Variable ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'vars\' => array(\'foo\' => \'bar\'))\n--EXPECT--\nbar\nbar\n--TEST--\n"extends" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\nFOO\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nFOO\n--TEST--\nblock_expr2\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"base2.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'element' Name.Variable ' ' Text '-' Text '%}' Comment.Preproc '\n Element:\n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '-' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(base2.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"base.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(base.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'spaceless' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'element' Name.Variable ' ' Text '-' Text '%}' Comment.Preproc '\n
    \n ' Other '{%' Comment.Preproc '- ' Text 'if' Keyword ' ' Text 'item' Name.Variable '.children' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc '- ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'item' Name.Variable '.children' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'block' Name.Builtin '(' Operator "'element'" Literal.String.Single ')' Operator ' ' Text '-' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc '- ' Text 'endif' Keyword ' ' Text '-' Text '%}' Comment.Preproc '\n
    \n' Other '{%' Comment.Preproc '- ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endspaceless' Keyword ' ' Text '%}' Comment.Preproc "\n--DATA--\nreturn array(\n 'item' => array(\n 'children' => array(\n null,\n null,\n )\n )\n)\n--EXPECT--\nElement:
    Element:
    Element:
    \n--TEST--\nblock_expr\n--TEMPLATE--\n" Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"base.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'element' Name.Variable ' ' Text '-' Text '%}' Comment.Preproc '\n Element:\n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '-' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(base.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'spaceless' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'element' Name.Variable ' ' Text '-' Text '%}' Comment.Preproc '\n
    \n ' Other '{%' Comment.Preproc '- ' Text 'if' Keyword ' ' Text 'item' Name.Variable '.children' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc '- ' Text 'for' Keyword ' ' Text 'item' Name.Variable ' ' Text 'in' Keyword ' ' Text 'item' Name.Variable '.children' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'block' Name.Builtin '(' Operator "'element'" Literal.String.Single ')' Operator ' ' Text '-' Text '}}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc '- ' Text 'endif' Keyword ' ' Text '-' Text '%}' Comment.Preproc '\n
    \n' Other '{%' Comment.Preproc '- ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endspaceless' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\n \'item\' => array(\n \'children\' => array(\n null,\n null,\n )\n )\n)\n--EXPECT--\nElement:
    Element:
    Element:
    \n--TEST--\n"extends" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text 'standalone' Name.Variable ' ' Text '?' Operator ' ' Text 'foo' Name.Variable ' ' Text ':' Operator ' ' Text "'bar.twig'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc 'FOO' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc 'FOO' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(bar.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc 'BAR' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'foo\' => \'foo.twig\', \'standalone\' => true)\n--EXPECT--\nFOOFOO\n--TEST--\n"extends" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\nFOO\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'foo\' => \'foo.twig\')\n--EXPECT--\nFOO\n--TEST--\n"extends" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc 'FOO' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nFOO\n--TEST--\n"extends" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '[' Operator '"foo.twig"' Literal.String.Double ',' Operator ' ' Text '"bar.twig"' Literal.String.Double ']' Operator ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(bar.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\nfoo\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfoo\n--TEST--\n"extends" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"layout.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc 'index ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(layout.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"base.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc 'layout ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(base.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc 'base ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nbase layout index\n--TEST--\n"block" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n CONTENT\n ' Other '{%' Comment.Preproc '- ' Text 'block' Keyword ' ' Text 'subcontent' Name.Variable ' ' Text '-' Text '%}' Comment.Preproc '\n SUBCONTENT\n ' Other '{%' Comment.Preproc '- ' Text 'endblock' Keyword ' ' Text '-' Text '%}' Comment.Preproc '\n ENDCONTENT\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n--DATA--\nreturn array()\n--EXPECT--\nCONTENTSUBCONTENTENDCONTENT\n--TEST--\n"block" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'subcontent' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'subsubcontent' Name.Variable ' ' Text '%}' Comment.Preproc '\n SUBSUBCONTENT\n ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'subcontent' Name.Variable ' ' Text '%}' Comment.Preproc '\n SUBCONTENT\n ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nSUBSUBCONTENT\n--TEST--\n"extends" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"layout.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'inside' Name.Variable ' ' Text '%}' Comment.Preproc 'INSIDE' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'inside' Name.Variable ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(layout.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"base.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'body' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'inside' Name.Variable ' ' Text "''" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'body' Name.Variable ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(base.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'body' Name.Variable ' ' Text "''" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nINSIDE\n--TEST--\n"extends" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text 'foo' Name.Variable ' ' Text '?' Operator ' ' Text "'foo.twig'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'bar.twig'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\nFOO\n--TEMPLATE(bar.twig)--\nBAR\n--DATA--\nreturn array(\'foo\' => true)\n--EXPECT--\nFOO\n--DATA--\nreturn array(\'foo\' => false)\n--EXPECT--\nBAR\n--TEST--\n"extends" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--EXCEPTION--\nTwig_Error_Syntax: Cannot extend from a block in "index.twig" at line 3\n--TEST--\n"extends" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"base.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"included.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'footer' Name.Variable ' ' Text '%}' Comment.Preproc 'Footer' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(included.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"base.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc 'Included Content' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(base.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc 'Default Content' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'footer' Name.Variable ' ' Text '%}' Comment.Preproc 'Default Footer' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nIncluded Content\nDefault Footer\nFooter\n--TEST--\n"extends" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'inside' Name.Variable ' ' Text '%}' Comment.Preproc '\n INSIDE OVERRIDDEN\n ' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n\n BEFORE\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n AFTER\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n BAR\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n\nINSIDE OVERRIDDEN\n \n BEFORE\n BAR\n\n AFTER\n--TEST--\n"extends" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc 'FOO' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc 'BAR' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nBARFOOBAR\n--TEST--\n"parent" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text "'foo.twig'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc 'BAR' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nBAR\n--TEST--\n"parent" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--EXCEPTION--\nTwig_Error_Syntax: Calling "parent" on a template that does not extend nor "use" another template is forbidden in "index.twig" at line 3\n--TEST--\n"extends" tag accepts Twig_Template instance\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc 'FOO\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc 'BAR' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'foo\' => $twig->loadTemplate(\'foo.twig\'))\n--EXPECT--\nBARFOO\n--TEST--\n"parent" function\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'extends' Keyword ' ' Text '"parent.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"use1.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"use2.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content_parent' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content_use1' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content_use2' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'content_use1_only'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n ' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'content_use2_only'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(parent.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content_parent' Name.Variable ' ' Text "'content_parent'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content_use1' Name.Variable ' ' Text "'content_parent'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content_use2' Name.Variable ' ' Text "'content_parent'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text "''" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(use1.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content_use1' Name.Variable ' ' Text "'content_use1'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content_use2' Name.Variable ' ' Text "'content_use1'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content_use1_only' Name.Variable ' ' Text "'content_use1_only'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(use2.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content_use2' Name.Variable ' ' Text "'content_use2'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content_use2_only' Name.Variable ' ' Text "'content_use2_only'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n content_parent\n content_use1\n content_use2\n content_use1_only\n content_use2_only\n--TEST--\n"macro" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'import' Keyword ' ' Text '_self' Name.Variable ' ' Text 'as' Name.Variable ' ' Text 'macros' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'macros' Name.Variable '.input' Name.Variable '(' Operator "'username'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'macros' Name.Variable '.input' Name.Variable '(' Operator "'password'" Literal.String.Single ',' Operator ' ' Text 'null' Keyword.Pseudo ',' Operator ' ' Text "'password'" Literal.String.Single ',' Operator ' ' Text '1' Literal.Number ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'input' Name.Variable '(' Operator 'name' Name.Variable ',' Operator ' ' Text 'value' Name.Variable ',' Operator ' ' Text 'type' Name.Variable ',' Operator ' ' Text 'size' Name.Variable ')' Operator ' ' Text '%}' Comment.Preproc '\n \n' Other '{%' Comment.Preproc ' ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n \n\n \n--TEST--\n"macro" tag supports name for endmacro\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'import' Keyword ' ' Text '_self' Name.Variable ' ' Text 'as' Name.Variable ' ' Text 'macros' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'macros' Name.Variable '.foo' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'macros' Name.Variable '.bar' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'foo' Name.Variable '(' Operator ')' Operator ' ' Text '%}' Comment.Preproc 'foo' Other '{%' Comment.Preproc ' ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'bar' Name.Variable '(' Operator ')' Operator ' ' Text '%}' Comment.Preproc 'bar' Other '{%' Comment.Preproc ' ' Text 'endmacro' Keyword ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfoo\nbar\n\n--TEST--\n"macro" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'import' Keyword ' ' Text "'forms.twig'" Literal.String.Single ' ' Text 'as' Name.Variable ' ' Text 'forms' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'forms' Name.Variable '.input' Name.Variable '(' Operator "'username'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'forms' Name.Variable '.input' Name.Variable '(' Operator "'password'" Literal.String.Single ',' Operator ' ' Text 'null' Keyword.Pseudo ',' Operator ' ' Text "'password'" Literal.String.Single ',' Operator ' ' Text '1' Literal.Number ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(forms.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'input' Name.Variable '(' Operator 'name' Name.Variable ',' Operator ' ' Text 'value' Name.Variable ',' Operator ' ' Text 'type' Name.Variable ',' Operator ' ' Text 'size' Name.Variable ')' Operator ' ' Text '%}' Comment.Preproc '\n \n' Other '{%' Comment.Preproc ' ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n \n\n \n--TEST--\n"macro" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'from' Keyword ' ' Text "'forms.twig'" Literal.String.Single ' ' Text 'import' Name.Variable ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'from' Keyword ' ' Text "'forms.twig'" Literal.String.Single ' ' Text 'import' Name.Variable ' ' Text 'foo' Name.Variable ' ' Text 'as' Name.Variable ' ' Text 'foobar' Name.Variable ',' Operator ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '(' Operator "'foo'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foobar' Name.Variable '(' Operator "'foo'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'bar' Name.Variable '(' Operator "'foo'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(forms.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'foo' Name.Variable '(' Operator 'name' Name.Variable ')' Operator ' ' Text '%}' Comment.Preproc 'foo' Other '{{' Comment.Preproc ' ' Text 'name' Name.Variable ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'bar' Name.Variable '(' Operator 'name' Name.Variable ')' Operator ' ' Text '%}' Comment.Preproc 'bar' Other '{{' Comment.Preproc ' ' Text 'name' Name.Variable ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfoofoo\nfoofoo\nbarfoo\n--TEST--\n"macro" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'from' Keyword ' ' Text "'forms.twig'" Literal.String.Single ' ' Text 'import' Name.Variable ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '(' Operator "'foo'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable '(' Operator ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(forms.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'foo' Name.Variable '(' Operator 'name' Name.Variable ')' Operator ' ' Text '%}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'name' Name.Variable '|' Operator 'default' Name.Function '(' Operator "'foo'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'global' Name.Variable ' ' Text '}}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfooglobal\nfooglobal\n--TEST--\n"macro" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'import' Keyword ' ' Text '_self' Name.Variable ' ' Text 'as' Name.Variable ' ' Text 'forms' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'forms' Name.Variable '.input' Name.Variable '(' Operator "'username'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'forms' Name.Variable '.input' Name.Variable '(' Operator "'password'" Literal.String.Single ',' Operator ' ' Text 'null' Keyword.Pseudo ',' Operator ' ' Text "'password'" Literal.String.Single ',' Operator ' ' Text '1' Literal.Number ')' Operator ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'macro' Keyword ' ' Text 'input' Name.Variable '(' Operator 'name' Name.Variable ',' Operator ' ' Text 'value' Name.Variable ',' Operator ' ' Text 'type' Name.Variable ',' Operator ' ' Text 'size' Name.Variable ')' Operator ' ' Text '%}' Comment.Preproc '\n \n' Other '{%' Comment.Preproc ' ' Text 'endmacro' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n \n\n \n--TEST--\n"raw" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'raw' Keyword ' ' Text '%}' Comment.Preproc '\n{{ foo }}\n' Other '{%' Comment.Preproc ' ' Text 'endraw' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '}}' Comment.Preproc '\n--TEST--\n"raw" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'raw' Keyword ' ' Text '%}' Comment.Preproc '\n{{ foo }}\n{% endverbatim %}\n--DATA--\nreturn array()\n--EXCEPTION--\nTwig_Error_Syntax: Unexpected end of file: Unclosed "raw" block in "index.twig" at line 2\n--TEST--\n"raw" tag\n--TEMPLATE--\n1***\n\n{%- raw %}\n {{ \'bla\' }}\n' Other '{%' Comment.Preproc ' ' Text 'endraw' Keyword ' ' Text '%}' Comment.Preproc '\n\n1***\n2***\n\n' Other '{%' Comment.Preproc '- ' Text 'raw' Keyword ' -' Text '%}' Comment.Preproc "\n {{ 'bla' }}\n" Other '{%' Comment.Preproc ' ' Text 'endraw' Keyword ' ' Text '%}' Comment.Preproc '\n\n2***\n3***\n\n' Other '{%' Comment.Preproc '- ' Text 'raw' Keyword ' -' Text '%}' Comment.Preproc "\n {{ 'bla' }}\n" Other '{%' Comment.Preproc ' ' Text 'endraw' Keyword ' -' Text '%}' Comment.Preproc '\n\n3***\n4***\n\n' Other '{%' Comment.Preproc '- ' Text 'raw' Keyword ' -' Text '%}' Comment.Preproc "\n {{ 'bla' }}\n" Other '{%' Comment.Preproc '- ' Text 'endraw' Keyword ' ' Text '%}' Comment.Preproc '\n\n4***\n5***\n\n' Other '{%' Comment.Preproc '- ' Text 'raw' Keyword ' -' Text '%}' Comment.Preproc "\n {{ 'bla' }}\n" Other '{%' Comment.Preproc '- ' Text 'endraw' Keyword ' -' Text '%}' Comment.Preproc '\n\n5***\n--DATA--\nreturn array()\n--EXPECT--\n1***\n ' Other '{{' Comment.Preproc ' ' Text "'bla'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n\n\n1***\n2***' Other '{{' Comment.Preproc ' ' Text "'bla'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n\n\n2***\n3***' Other '{{' Comment.Preproc ' ' Text "'bla'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n3***\n4***' Other '{{' Comment.Preproc ' ' Text "'bla'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n\n4***\n5***' Other '{{' Comment.Preproc ' ' Text "'bla'" Literal.String.Single ' ' Text '}}' Comment.Preproc '5***\n--TEST--\nsandbox tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc '- ' Text 'sandbox' Keyword ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc '- ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n a\n' Other '{%' Comment.Preproc '- ' Text 'endsandbox' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\nfoo\n--EXCEPTION--\nTwig_Error_Syntax: Only "include" tags are allowed within a "sandbox" section in "index.twig" at line 4\n--TEST--\nsandbox tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc '- ' Text 'sandbox' Keyword ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc '- ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n ' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text '1' Literal.Number ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc '- ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc '- ' Text 'endsandbox' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\nfoo\n--EXCEPTION--\nTwig_Error_Syntax: Only "include" tags are allowed within a "sandbox" section in "index.twig" at line 5\n--TEST--\nsandbox tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc '- ' Text 'sandbox' Keyword ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc '- ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc '- ' Text 'endsandbox' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc '- ' Text 'sandbox' Keyword ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc '- ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n ' Other '{%' Comment.Preproc '- ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc '- ' Text 'endsandbox' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc '- ' Text 'sandbox' Keyword ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'include' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endsandbox' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\nfoo\n--DATA--\nreturn array()\n--EXPECT--\nfoo\nfoo\nfoo\nfoo\n--TEST--\n"set" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'foo' Name.Variable ' ' Text '=' Operator ' ' Text "'foo'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'bar' Name.Variable ' ' Text '=' Operator ' ' Text "'foo
    '" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'bar' Name.Variable ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'foo' Name.Variable ',' Operator ' ' Text 'bar' Name.Variable ' ' Text '=' Operator ' ' Text "'foo'" Literal.String.Single ',' Operator ' ' Text "'bar'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '}}' Comment.Preproc '{{' Comment.Preproc ' ' Text 'bar' Name.Variable ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfoo\nfoo<br />\n\n\nfoobar\n--TEST--\n"set" tag block empty capture\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '{%' Comment.Preproc ' ' Text 'endset' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc 'FAIL' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n--TEST--\n"set" tag block capture\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc 'f
    o
    o' Other '{%' Comment.Preproc ' ' Text 'endset' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nf
    o
    o\n--TEST--\n"set" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'set' Keyword ' ' Text 'foo' Name.Variable ',' Operator ' ' Text 'bar' Name.Variable ' ' Text '=' Operator ' ' Text "'foo'" Literal.String.Single ' ' Text '~' Operator ' ' Text "'bar'" Literal.String.Single ',' Operator ' ' Text "'bar'" Literal.String.Single ' ' Text '~' Operator ' ' Text "'foo'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'bar' Name.Variable ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfoobar\nbarfoo\n--TEST--\n"spaceless" tag removes whites between HTML tags\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'spaceless' Keyword ' ' Text '%}' Comment.Preproc '\n\n
    foo
    \n\n' Other '{%' Comment.Preproc ' ' Text 'endspaceless' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n
    foo
    \n--TEST--\n"§" custom tag\n--TEMPLATE--\n' Other '{' Other '% § %}\n--DATA--\nreturn array()\n--EXPECT--\n§\n--TEST--\nWhitespace trimming on tags.\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '5' Literal.Number ' ' Text '*' Operator ' ' Text "'{#-'" Literal.String.Single '|' Operator 'length' Name.Function ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'{{-'" Literal.String.Single '|' Operator 'length' Name.Function ' ' Text '*' Operator ' ' Text '5' Literal.Number ' ' Text '+' Operator ' ' Text "'{%-'" Literal.String.Single '|' Operator 'length' Name.Function ' ' Text '}}' Comment.Preproc '\n\nTrim on control tag:\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'i' Name.Variable ' ' Text 'in' Keyword ' ' Text 'range' Name.Variable '(' Operator '1' Literal.Number ',' Operator ' ' Text '9' Literal.Number ')' Operator ' ' Text '-' Text '%}' Comment.Preproc '\n\t' Other '{{' Comment.Preproc ' ' Text 'i' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc '- ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n\n\nTrim on output tag:\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'i' Name.Variable ' ' Text 'in' Keyword ' ' Text 'range' Name.Variable '(' Operator '1' Literal.Number ',' Operator ' ' Text '9' Literal.Number ')' Operator ' ' Text '%}' Comment.Preproc '\n\t' Other '{{' Comment.Preproc '-' Operator ' ' Text 'i' Name.Variable ' ' Text '-' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n\n\nTrim comments:\n \n' Other '{#- Invisible -#}' Comment '\n \nAfter the comment.\n\nTrim leading space:\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'leading' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n\t\t' Other '{{' Comment.Preproc '-' Operator ' ' Text 'leading' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc '- ' Text 'if' Keyword ' ' Text 'leading' Name.Variable ' ' Text '%}' Comment.Preproc '\n\t' Other '{{' Comment.Preproc '-' Operator ' ' Text 'leading' Name.Variable ' ' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc '- ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n\n\nTrim trailing space:\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'trailing' Name.Variable ' ' Text '-' Text '%}' Comment.Preproc ' \n\t' Other '{{' Comment.Preproc ' ' Text 'trailing' Name.Variable ' ' Text '-' Text '}}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '-' Text '%}' Comment.Preproc '\n\nCombined:\n\n' Other '{%' Comment.Preproc '- ' Text 'if' Keyword ' ' Text 'both' Name.Variable ' ' Text '-' Text '%}' Comment.Preproc '\n
      \n\t
    • ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'both' Name.Variable ' ' Text '-' Text '}}' Comment.Preproc '
    • \n
    \n\n' Other '{%' Comment.Preproc '- ' Text 'endif' Keyword ' ' Text '-' Text '%}' Comment.Preproc '\n\nend\n--DATA--\nreturn array(\'leading\' => \'leading space\', \'trailing\' => \'trailing space\', \'both\' => \'both\')\n--EXPECT--\n15\n18\n\nTrim on control tag:\n123456789\n\nTrim on output tag:\n123456789\n\nTrim comments:After the comment.\n\nTrim leading space:\nleading space\nleading space\n\nTrim trailing space:\ntrailing spaceCombined:
      \n\t
    • both
    • \n
    end\n--TEST--\n"use" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"blocks.twig"' Literal.String.Double ' ' Text 'with' Name.Variable ' ' Text 'content' Name.Variable ' ' Text 'as' Name.Variable ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'foo'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(blocks.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text "'foo'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfoo\n--TEST--\n"use" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"blocks.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'content'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(blocks.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text "'foo'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfoo\n--TEST--\n"use" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"bar.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(bar.twig)--\n--DATA--\nreturn array()\n--EXPECT--\n--TEST--\n"use" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'content'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'foo'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'bar'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"bar.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text "'foo'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foo' Name.Variable ' ' Text "'foo'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(bar.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text "'bar'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'bar' Name.Variable ' ' Text "'bar'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nfoo\nfoo\nbar\n--TEST--\n"use" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"ancestor.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"parent.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'container'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(parent.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'sub_container' Name.Variable ' ' Text '%}' Comment.Preproc '\n
    overriden sub_container
    \n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(ancestor.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'container' Name.Variable ' ' Text '%}' Comment.Preproc '\n
    ' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'sub_container'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '
    \n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'sub_container' Name.Variable ' ' Text '%}' Comment.Preproc '\n
    sub_container
    \n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n
    overriden sub_container
    \n
    \n--TEST--\n"use" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"parent.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'container'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(parent.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"ancestor.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'sub_container' Name.Variable ' ' Text '%}' Comment.Preproc '\n
    overriden sub_container
    \n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(ancestor.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'container' Name.Variable ' ' Text '%}' Comment.Preproc '\n
    ' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'sub_container'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '
    \n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'sub_container' Name.Variable ' ' Text '%}' Comment.Preproc '\n
    sub_container
    \n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n
    overriden sub_container
    \n
    \n--TEST--\n"use" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text 'with' Name.Variable ' ' Text 'content' Name.Variable ' ' Text 'as' Name.Variable ' ' Text 'foo_content' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"bar.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'content'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'foo'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'bar'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'foo_content'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text "'foo'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foo' Name.Variable ' ' Text "'foo'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(bar.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text "'bar'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'bar' Name.Variable ' ' Text "'bar'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nbar\nfoo\nbar\nfoo\n--TEST--\n"use" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"foo.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text '"bar.twig"' Literal.String.Double ' ' Text '%}' Comment.Preproc '\n\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'content'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'foo'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'block' Name.Builtin '(' Operator "'bar'" Literal.String.Single ')' Operator ' ' Text '}}' Comment.Preproc '\n--TEMPLATE(foo.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text "'foo'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foo' Name.Variable ' ' Text "'foo'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(bar.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'content' Name.Variable ' ' Text "'bar'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'bar' Name.Variable ' ' Text "'bar'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nbar\nfoo\nbar\n--TEST--\n"use" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text "'file2.html.twig'" Literal.String.Single '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foobar' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '-' Text '}}' Comment.Preproc '\n Content of block (second override)\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'foobar' Name.Variable ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(file2.html.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text "'file1.html.twig'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foobar' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '-' Text '}}' Comment.Preproc '\n Content of block (first override)\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'foobar' Name.Variable ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(file1.html.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foobar' Name.Variable ' ' Text '-' Text '%}' Comment.Preproc '\n Content of block\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'foobar' Name.Variable ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nContent of block\nContent of block (first override)\nContent of block (second override)\n--TEST--\n"use" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text "'file2.html.twig'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text "'file1.html.twig'" Literal.String.Single ' ' Text 'with' Name.Variable ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '-' Text '}}' Comment.Preproc '\n Content of foo (second override)\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '-' Text '}}' Comment.Preproc '\n Content of bar (second override)\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(file2.html.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text "'file1.html.twig'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '-' Text '}}' Comment.Preproc '\n Content of foo (first override)\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'parent' Name.Builtin '(' Operator ')' Operator ' ' Text '-' Text '}}' Comment.Preproc '\n Content of bar (first override)\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(file1.html.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foo' Name.Variable ' ' Text '-' Text '%}' Comment.Preproc '\n Content of foo\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'bar' Name.Variable ' ' Text '-' Text '%}' Comment.Preproc '\n Content of bar\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nContent of foo\nContent of foo (first override)\nContent of foo (second override)\nContent of bar\nContent of bar (second override)\n--TEST--\n"use" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text "'file2.html.twig'" Literal.String.Single ' ' Text 'with' Name.Variable ' ' Text 'foobar' Name.Variable ' ' Text 'as' Name.Variable ' ' Text 'base_base_foobar' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foobar' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'block' Name.Builtin '(' Operator "'base_base_foobar'" Literal.String.Single ')' Operator ' ' Text '-' Text '}}' Comment.Preproc '\n Content of block (second override)\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'foobar' Name.Variable ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(file2.html.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'use' Keyword ' ' Text "'file1.html.twig'" Literal.String.Single ' ' Text 'with' Name.Variable ' ' Text 'foobar' Name.Variable ' ' Text 'as' Name.Variable ' ' Text 'base_foobar' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foobar' Name.Variable ' ' Text '%}' Comment.Preproc '\n ' Other '{{' Comment.Preproc '-' Operator ' ' Text 'block' Name.Builtin '(' Operator "'base_foobar'" Literal.String.Single ')' Operator ' ' Text '-' Text '}}' Comment.Preproc '\n Content of block (first override)\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'foobar' Name.Variable ' ' Text '%}' Comment.Preproc '\n--TEMPLATE(file1.html.twig)--\n' Other '{%' Comment.Preproc ' ' Text 'block' Keyword ' ' Text 'foobar' Name.Variable ' ' Text '-' Text '%}' Comment.Preproc '\n Content of block\n' Other '{%' Comment.Preproc ' ' Text 'endblock' Keyword ' ' Text 'foobar' Name.Variable ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nContent of block\nContent of block (first override)\nContent of block (second override)\n--TEST--\n"verbatim" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'verbatim' Keyword ' ' Text '%}' Comment.Preproc '\n{{ foo }}\n' Other '{%' Comment.Preproc ' ' Text 'endverbatim' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text '}}' Comment.Preproc '\n--TEST--\n"verbatim" tag\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'verbatim' Keyword ' ' Text '%}' Comment.Preproc '\n{{ foo }}\n{% endraw %}\n--DATA--\nreturn array()\n--EXCEPTION--\nTwig_Error_Syntax: Unexpected end of file: Unclosed "verbatim" block in "index.twig" at line 2\n--TEST--\n"verbatim" tag\n--TEMPLATE--\n1***\n\n{%- verbatim %}\n {{ \'bla\' }}\n' Other '{%' Comment.Preproc ' ' Text 'endverbatim' Keyword ' ' Text '%}' Comment.Preproc '\n\n1***\n2***\n\n' Other '{%' Comment.Preproc '- ' Text 'verbatim' Keyword ' -' Text '%}' Comment.Preproc "\n {{ 'bla' }}\n" Other '{%' Comment.Preproc ' ' Text 'endverbatim' Keyword ' ' Text '%}' Comment.Preproc '\n\n2***\n3***\n\n' Other '{%' Comment.Preproc '- ' Text 'verbatim' Keyword ' -' Text '%}' Comment.Preproc "\n {{ 'bla' }}\n" Other '{%' Comment.Preproc ' ' Text 'endverbatim' Keyword ' -' Text '%}' Comment.Preproc '\n\n3***\n4***\n\n' Other '{%' Comment.Preproc '- ' Text 'verbatim' Keyword ' -' Text '%}' Comment.Preproc "\n {{ 'bla' }}\n" Other '{%' Comment.Preproc '- ' Text 'endverbatim' Keyword ' ' Text '%}' Comment.Preproc '\n\n4***\n5***\n\n' Other '{%' Comment.Preproc '- ' Text 'verbatim' Keyword ' -' Text '%}' Comment.Preproc "\n {{ 'bla' }}\n" Other '{%' Comment.Preproc '- ' Text 'endverbatim' Keyword ' -' Text '%}' Comment.Preproc '\n\n5***\n--DATA--\nreturn array()\n--EXPECT--\n1***\n ' Other '{{' Comment.Preproc ' ' Text "'bla'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n\n\n1***\n2***' Other '{{' Comment.Preproc ' ' Text "'bla'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n\n\n2***\n3***' Other '{{' Comment.Preproc ' ' Text "'bla'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n3***\n4***' Other '{{' Comment.Preproc ' ' Text "'bla'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n\n4***\n5***' Other '{{' Comment.Preproc ' ' Text "'bla'" Literal.String.Single ' ' Text '}}' Comment.Preproc '5***\n--TEST--\narray index test\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'for' Keyword ' ' Text 'key' Name.Variable ',' Operator ' ' Text 'value' Name.Variable ' ' Text 'in' Keyword ' ' Text 'days' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'key' Name.Variable ' ' Text '}}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'endfor' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\nreturn array(\'days\' => array(\n 1 => array(\'money\' => 9),\n 2 => array(\'money\' => 21),\n 3 => array(\'money\' => 38),\n 4 => array(\'money\' => 6),\n 18 => array(\'money\' => 6),\n 19 => array(\'money\' => 3),\n 31 => array(\'money\' => 11),\n));\n--EXPECT--\n1\n2\n3\n4\n18\n19\n31\n--TEST--\n"const" test\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '8' Literal.Number ' ' Text 'is' Keyword ' ' Text 'constant' Name.Function '(' Operator "'E_NOTICE'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'no'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'bar'" Literal.String.Single ' ' Text 'is' Keyword ' ' Text 'constant' Name.Function '(' Operator "'TwigTestFoo::BAR_NAME'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'no'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'value' Name.Variable ' ' Text 'is' Keyword ' ' Text 'constant' Name.Function '(' Operator "'TwigTestFoo::BAR_NAME'" Literal.String.Single ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'no'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number ' ' Text 'is' Keyword ' ' Text 'constant' Name.Function '(' Operator "'ARRAY_AS_PROPS'" Literal.String.Single ',' Operator ' ' Text 'object' Name.Variable ')' Operator ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'no'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\'value\' => \'bar\', \'object\' => new ArrayObject(array(\'hi\')));\n--EXPECT--\nok\nok\nok\nok--TEST--\n"defined" test\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'definedVar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'definedVar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'not' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'undefinedVar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'undefinedVar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'not' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'zeroVar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nullVar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.definedVar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '[' Operator "'definedVar'" Literal.String.Single ']' Operator ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.definedVar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'not' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.undefinedVar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '[' Operator "'undefinedVar'" Literal.String.Single ']' Operator ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.undefinedVar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'not' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.zeroVar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.nullVar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '.definedArray' Name.Variable '.0' Literal.Number ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'nested' Name.Variable '[' Operator "'definedArray'" Literal.String.Single ']' Operator '[' Operator '0' Literal.Number ']' Operator ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.foo' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.undefinedMethod' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.getFoo' Name.Variable '(' Operator ')' Operator ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.getFoo' Name.Variable '(' Operator "'a'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.undefinedMethod' Name.Variable '(' Operator ')' Operator ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.undefinedMethod' Name.Variable '(' Operator "'a'" Literal.String.Single ')' Operator ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.self' Name.Variable '.foo' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.self' Name.Variable '.undefinedMethod' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'object' Name.Variable '.undefinedMethod' Name.Variable '.self' Name.Variable ' ' Text 'is' Keyword ' ' Text 'defined' Name.Function ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\n \'definedVar\' => \'defined\',\n \'zeroVar\' => 0,\n \'nullVar\' => null,\n \'nested\' => array(\n \'definedVar\' => \'defined\',\n \'zeroVar\' => 0,\n \'nullVar\' => null,\n \'definedArray\' => array(0),\n ),\n \'object\' => new TwigTestFoo(),\n);\n--EXPECT--\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\n--DATA--\nreturn array(\n \'definedVar\' => \'defined\',\n \'zeroVar\' => 0,\n \'nullVar\' => null,\n \'nested\' => array(\n \'definedVar\' => \'defined\',\n \'zeroVar\' => 0,\n \'nullVar\' => null,\n \'definedArray\' => array(0),\n ),\n \'object\' => new TwigTestFoo(),\n);\n--CONFIG--\nreturn array(\'strict_variables\' => false)\n--EXPECT--\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\nok\n--TEST--\n"empty" test\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text 'is' Keyword ' ' Text 'empty' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'bar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'empty' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'foobar' Name.Variable ' ' Text 'is' Keyword ' ' Text 'empty' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'array' Name.Variable ' ' Text 'is' Keyword ' ' Text 'empty' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'zero' Name.Variable ' ' Text 'is' Keyword ' ' Text 'empty' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'string' Name.Variable ' ' Text 'is' Keyword ' ' Text 'empty' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'countable_empty' Name.Variable ' ' Text 'is' Keyword ' ' Text 'empty' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'countable_not_empty' Name.Variable ' ' Text 'is' Keyword ' ' Text 'empty' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'markup_empty' Name.Variable ' ' Text 'is' Keyword ' ' Text 'empty' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'markup_not_empty' Name.Variable ' ' Text 'is' Keyword ' ' Text 'empty' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\n\nclass CountableStub implements Countable\n' Other '{' Other '\n private $items;\n\n public function __construct(array $items)\n ' Other '{' Other '\n $this->items = $items;\n }\n\n public function count()\n ' Other '{' Other '\n return count($this->items);\n }\n}\nreturn array(\n \'foo\' => \'\', \'bar\' => null, \'foobar\' => false, \'array\' => array(), \'zero\' => 0, \'string\' => \'0\',\n \'countable_empty\' => new CountableStub(array()), \'countable_not_empty\' => new CountableStub(array(1, 2)),\n \'markup_empty\' => new Twig_Markup(\'\', \'UTF-8\'), \'markup_not_empty\' => new Twig_Markup(\'test\', \'UTF-8\'),\n);\n--EXPECT--\nok\nok\nok\nok\nko\nko\nok\nko\nok\nko\n--TEST--\n"even" test\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'is' Keyword ' ' Text 'even' Name.Function ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number ' ' Text 'is' Keyword ' ' Text 'even' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'is' Keyword ' ' Text 'not' Keyword ' ' Text 'even' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number ' ' Text 'is' Keyword ' ' Text 'not' Keyword ' ' Text 'even' Name.Function ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nok\nok\nok\nok\n--TEST--\nTwig supports the in operator\n--TEMPLATE--\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'bar' Name.Variable ' ' Text 'in' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\nTRUE\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'not' Keyword ' ' Text '(' Operator 'bar' Name.Variable ' ' Text 'in' Keyword ' ' Text 'foo' Name.Variable ')' Operator ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'else' Keyword ' ' Text '%}' Comment.Preproc '\nTRUE\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'bar' Name.Variable ' ' Text 'not' Keyword ' ' Text 'in' Keyword ' ' Text 'foo' Name.Variable ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'else' Keyword ' ' Text '%}' Comment.Preproc '\nTRUE\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text "'a'" Literal.String.Single ' ' Text 'in' Keyword ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc '\nTRUE\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text "'c'" Literal.String.Single ' ' Text 'not' Keyword ' ' Text 'in' Keyword ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc '\nTRUE\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text "''" Literal.String.Single ' ' Text 'not' Keyword ' ' Text 'in' Keyword ' ' Text 'bar' Name.Variable ' ' Text '%}' Comment.Preproc '\nTRUE\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text "''" Literal.String.Single ' ' Text 'in' Keyword ' ' Text "''" Literal.String.Single ' ' Text '%}' Comment.Preproc '\nTRUE\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text "'0'" Literal.String.Single ' ' Text 'not' Keyword ' ' Text 'in' Keyword ' ' Text "''" Literal.String.Single ' ' Text '%}' Comment.Preproc '\nTRUE\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text "'a'" Literal.String.Single ' ' Text 'not' Keyword ' ' Text 'in' Keyword ' ' Text "'0'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\nTRUE\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text "'0'" Literal.String.Single ' ' Text 'in' Keyword ' ' Text "'0'" Literal.String.Single ' ' Text '%}' Comment.Preproc '\nTRUE\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'false' Keyword.Pseudo ' ' Text 'in' Keyword ' ' Text '[' Operator '0' Literal.Number ',' Operator ' ' Text '1' Literal.Number ']' Operator ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'true' Keyword.Pseudo ' ' Text 'in' Keyword ' ' Text '[' Operator '0' Literal.Number ',' Operator ' ' Text '1' Literal.Number ']' Operator ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "'0'" Literal.String.Single ' ' Text 'in' Keyword ' ' Text '[' Operator '0' Literal.Number ',' Operator ' ' Text '1' Literal.Number ']' Operator ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "''" Literal.String.Single ' ' Text 'in' Keyword ' ' Text '[' Operator '0' Literal.Number ',' Operator ' ' Text '1' Literal.Number ']' Operator ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text 'in' Keyword ' ' Text '[' Operator "''" Literal.String.Single ',' Operator ' ' Text '1' Literal.Number ']' Operator ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text "''" Literal.String.Single ' ' Text 'in' Keyword ' ' Text "'foo'" Literal.String.Single ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '0' Literal.Number ' ' Text 'in' Keyword ' ' Text "'foo'" Literal.String.Single ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'false' Keyword.Pseudo ' ' Text 'in' Keyword ' ' Text "'foo'" Literal.String.Single ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'true' Keyword.Pseudo ' ' Text 'in' Keyword ' ' Text "'100'" Literal.String.Single ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator ']' Operator ' ' Text 'in' Keyword ' ' Text "'Array'" Literal.String.Single ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator ']' Operator ' ' Text 'in' Keyword ' ' Text '[' Operator 'true' Keyword.Pseudo ',' Operator ' ' Text 'false' Keyword.Pseudo ']' Operator ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator ']' Operator ' ' Text 'in' Keyword ' ' Text '[' Operator 'true' Keyword.Pseudo ',' Operator ' ' Text "''" Literal.String.Single ']' Operator ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '[' Operator ']' Operator ' ' Text 'in' Keyword ' ' Text '[' Operator 'true' Keyword.Pseudo ',' Operator ' ' Text '[' Operator ']' Operator ']' Operator ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'dir_object' Name.Variable ' ' Text 'in' Keyword ' ' Text "'foo'" Literal.String.Single '~' Operator 'dir_name' Name.Variable ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '5' Literal.Number ' ' Text 'in' Keyword ' ' Text '1' Literal.Number '2' Literal.Number '5' Literal.Number ' ' Text '?' Operator ' ' Text "'TRUE'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'FALSE'" Literal.String.Single ' ' Text '}}' Comment.Preproc "\n--DATA--\nreturn array('bar' => 'bar', 'foo' => array('bar' => 'bar'), 'dir_name' => dirname(__FILE__), 'dir_object' => new SplFileInfo(dirname(__FILE__)))\n--EXPECT--\nTRUE\nTRUE\nTRUE\nTRUE\nTRUE\nTRUE\nTRUE\nTRUE\nTRUE\nFALSE\nFALSE\nFALSE\nFALSE\nFALSE\nTRUE\nFALSE\nFALSE\nFALSE\nFALSE\nFALSE\nFALSE\nTRUE\nFALSE\nFALSE\n--TEST--\nTwig supports the in operator when using objects\n--TEMPLATE--\n" Other '{%' Comment.Preproc ' ' Text 'if' Keyword ' ' Text 'object' Name.Variable ' ' Text 'in' Keyword ' ' Text 'object_list' Name.Variable ' ' Text '%}' Comment.Preproc '\nTRUE\n' Other '{%' Comment.Preproc ' ' Text 'endif' Keyword ' ' Text '%}' Comment.Preproc '\n--DATA--\n$foo = new TwigTestFoo();\n$foo1 = new TwigTestFoo();\n\n$foo->position = $foo1;\n$foo1->position = $foo;\n\nreturn array(\n \'object\' => $foo,\n \'object_list\' => array($foo1, $foo),\n);\n--EXPECT--\nTRUE\n--TEST--\n"iterable" test\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text 'foo' Name.Variable ' ' Text 'is' Keyword ' ' Text 'iterable' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'traversable' Name.Variable ' ' Text 'is' Keyword ' ' Text 'iterable' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'obj' Name.Variable ' ' Text 'is' Keyword ' ' Text 'iterable' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text 'val' Name.Variable ' ' Text 'is' Keyword ' ' Text 'iterable' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array(\n \'foo\' => array(),\n \'traversable\' => new ArrayIterator(array()),\n \'obj\' => new stdClass(),\n \'val\' => \'test\',\n);\n--EXPECT--\nok\nok\nko\nko--TEST--\n"odd" test\n--TEMPLATE--\n' Other '{{' Comment.Preproc ' ' Text '1' Literal.Number ' ' Text 'is' Keyword ' ' Text 'odd' Name.Function ' ' Text '?' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n' Other '{{' Comment.Preproc ' ' Text '2' Literal.Number ' ' Text 'is' Keyword ' ' Text 'odd' Name.Function ' ' Text '?' Operator ' ' Text "'ko'" Literal.String.Single ' ' Text ':' Operator ' ' Text "'ok'" Literal.String.Single ' ' Text '}}' Comment.Preproc '\n--DATA--\nreturn array()\n--EXPECT--\nok\nok\n' Other