package com.hubspot.jinjava.lib.filter; import java.util.regex.Pattern; import org.jsoup.Jsoup; import com.hubspot.jinjava.doc.annotations.JinjavaDoc; import com.hubspot.jinjava.doc.annotations.JinjavaSnippet; import com.hubspot.jinjava.interpret.JinjavaInterpreter; /** * striptags(value) Strip SGML/XML tags and replace adjacent whitespace by one space. */ @JinjavaDoc( value = "Strip SGML/XML tags and replace adjacent whitespace by one space.", snippets = { @JinjavaSnippet( code = "{% set some_html = \"<div><strong>Some text</strong></div>\" %}\n" + "{{ some_html|striptags }}") }) public class StripTagsFilter implements Filter { private static final Pattern WHITESPACE = Pattern.compile("\\s{2,}"); @Override public Object filter(Object object, JinjavaInterpreter interpreter, String... arg) { if (!(object instanceof String)) { return object; } String val = interpreter.renderFlat((String) object); String strippedVal = Jsoup.parseBodyFragment(val).text(); String normalizedVal = WHITESPACE.matcher(strippedVal).replaceAll(" "); return normalizedVal; } @Override public String getName() { return "striptags"; } }