Commits

David Black [Atlassian] committed 1b8a484

SOY-33: based upon feedback in the code review call Sanitizers.escapeHtml instead of implementing SanitizedContentOperator.

Signed-off-by: David Black <dblack@atlassian.com>

Comments (0)

Files changed (1)

soy-template-plugin/src/main/java/com/atlassian/soy/impl/functions/GetTextAsHtmlFunction.java

 import com.atlassian.sal.api.message.I18nResolver;
 import com.google.inject.Singleton;
 import com.google.template.soy.data.SanitizedContent;
-import com.google.template.soy.data.SanitizedContentOperator;
 import com.google.template.soy.data.SoyData;
 import com.google.template.soy.jssrc.restricted.JsExpr;
 import com.google.template.soy.jssrc.restricted.SoyJsSrcFunction;
+import com.google.template.soy.shared.restricted.Sanitizers;
 import com.google.template.soy.tofu.restricted.SoyTofuFunction;
 
-import javax.annotation.Nonnull;
 import javax.inject.Inject;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
 
  * @since v2.2.0
  */
 @Singleton
-public class GetTextAsHtmlFunction implements SoyJsSrcFunction, SoyTofuFunction, SanitizedContentOperator
+public class GetTextAsHtmlFunction implements SoyJsSrcFunction, SoyTofuFunction
 {
     private final GetTextFunction getTextFunction;
 
     @Override
     public JsExpr computeForJsSrc(List<JsExpr> args)
     {
-        return new JsExpr("new soydata.SanitizedHtml(" + getTextFunction.computeForJsSrc(args).getText() + ")", Integer.MAX_VALUE);
+        return new JsExpr("new soydata.SanitizedHtml(" +
+            getTextFunction.computeForJsSrc(args).getText() + ")",
+            Integer.MAX_VALUE);
     }
 
     @Override
     public SoyData computeForTofu(List<SoyData> args)
     {
-        return getTextFunction.computeForTofu(args);
-    }
-
-    /**
-     * The kind of content consumed and produced.
-     */
-    @Nonnull
-    @Override
-    public SanitizedContent.ContentKind getContentKind()
-    {
-        return SanitizedContent.ContentKind.HTML;
+        ArrayList <SoyData> escapedArgs = new ArrayList<SoyData>();
+        for(SoyData arg : args)
+        {
+            escapedArgs.add(new SanitizedContent(Sanitizers.escapeHtml(arg),
+                SanitizedContent.ContentKind.HTML));
+        }
+        return getTextFunction.computeForTofu(escapedArgs);
     }
 }
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.