1--TEST-- 2"autoescape" tag applies escaping after calling filters, and before calling pre_escape filters 3--TEMPLATE-- 4{% autoescape 'html' %} 5 6(nl2br is pre_escaped for "html" and declared safe for "html") 7 81. Pre-escape and don't post-escape 9( var|escape|nl2br ) 10{{ var|nl2br }} 11 122. Don't double-pre-escape 13( var|escape|nl2br ) 14{{ var|escape|nl2br }} 15 163. Don't escape safe values 17( var|raw|nl2br ) 18{{ var|raw|nl2br }} 19 204. Don't escape safe values 21( var|escape|nl2br|nl2br ) 22{{ var|nl2br|nl2br }} 23 245. Re-escape values that are escaped for an other contexts 25( var|escape_something|escape|nl2br ) 26{{ var|escape_something|nl2br }} 27 286. Still escape when using filters not declared safe 29( var|escape|nl2br|upper|escape ) 30{{ var|nl2br|upper }} 31 32{% endautoescape %} 33--DATA-- 34return ['var' => "<Fabien>\nTwig"] 35--EXPECT-- 36 37(nl2br is pre_escaped for "html" and declared safe for "html") 38 391. Pre-escape and don't post-escape 40( var|escape|nl2br ) 41<Fabien><br /> 42Twig 43 442. Don't double-pre-escape 45( var|escape|nl2br ) 46<Fabien><br /> 47Twig 48 493. Don't escape safe values 50( var|raw|nl2br ) 51<Fabien><br /> 52Twig 53 544. Don't escape safe values 55( var|escape|nl2br|nl2br ) 56<Fabien><br /><br /> 57Twig 58 595. Re-escape values that are escaped for an other contexts 60( var|escape_something|escape|nl2br ) 61<FABIEN><br /> 62TWIG 63 646. Still escape when using filters not declared safe 65( var|escape|nl2br|upper|escape ) 66&LT;FABIEN&GT;<BR /> 67TWIG 68 69