55import com .mitchellbosecke .pebble .extension .Filter ;
66import com .mitchellbosecke .pebble .extension .Function ;
77import com .mitchellbosecke .pebble .extension .Test ;
8+ import com .mitchellbosecke .pebble .extension .escaper .SafeString ;
89import com .mitchellbosecke .pebble .template .EvaluationContext ;
910import com .mitchellbosecke .pebble .template .PebbleTemplate ;
1011
@@ -87,7 +88,13 @@ public void addFilter(Environment env, String name, Invoker filter, @Arg(type =
8788 @ Override
8889 public Object apply (Object o , Map <String , Object > map ,
8990 PebbleTemplate pebbleTemplate , EvaluationContext evaluationContext , int i ) throws PebbleException {
90- return filter .callAny (o , convertArgs (env , map ), new TwigTemplate (env , pebbleTemplate ), i );
91+ Memory memory = filter .callAny (o , convertArgs (env , map ), new TwigTemplate (env , pebbleTemplate ), i );
92+
93+ if (memory .instanceOf (TwigSafeString .class )) {
94+ return memory .toObject (TwigSafeString .class ).getWrappedObject ();
95+ }
96+
97+ return memory ;
9198 }
9299
93100 @ Override
@@ -109,7 +116,13 @@ public void addFunction(Environment env, String name, Invoker function, @Arg(typ
109116 functionMap .put (name , new Function () {
110117 @ Override
111118 public Object execute (Map <String , Object > map , PebbleTemplate pebbleTemplate , EvaluationContext evaluationContext , int i ) {
112- return function .callAny (convertArgs (env , map ), new TwigTemplate (env , pebbleTemplate ), i );
119+ Memory memory = function .callAny (convertArgs (env , map ), new TwigTemplate (env , pebbleTemplate ), i );
120+
121+ if (memory .instanceOf (TwigSafeString .class )) {
122+ return memory .toObject (TwigSafeString .class ).getWrappedObject ();
123+ }
124+
125+ return memory ;
113126 }
114127
115128 @ Override
@@ -143,6 +156,11 @@ public List<String> getArgumentNames() {
143156
144157 @ Signature
145158 public void addGlobalVar (String name , Memory value ) {
159+ if (value .instanceOf (TwigSafeString .class )) {
160+ globalVarMap .put (name , value .toObject (TwigSafeString .class ).getWrappedObject ());
161+ return ;
162+ }
163+
146164 globalVarMap .put (name , value );
147165 }
148166}
0 commit comments