diff --git a/pom.xml b/pom.xml
index 92f05e81..aec5e7ae 100644
--- a/pom.xml
+++ b/pom.xml
@@ -62,7 +62,6 @@
4.13.0
2.13.4.2
2.13.2
- 1.15.3
4.13.1
@@ -101,13 +100,6 @@
${jackson.version}
-
-
- org.jsoup
- jsoup
- ${jsoup.version}
-
-
ua.co.k
strftime4j
diff --git a/src/main/java/liqp/LValue.java b/src/main/java/liqp/LValue.java
index 9e91fb84..42acf352 100644
--- a/src/main/java/liqp/LValue.java
+++ b/src/main/java/liqp/LValue.java
@@ -493,4 +493,19 @@ public boolean isMap(Object value) {
public Map asMap(Object value) {
return (Map)value;
}
+
+ public static boolean isBlank(final String string) {
+ if (string == null || string.length() == 0)
+ return true;
+
+ int l = string.length();
+ for (int i = 0; i < l; i++) {
+ if (!isWhitespace(string.codePointAt(i)))
+ return false;
+ }
+ return true;
+ }
+ private static boolean isWhitespace(int c){
+ return c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\r';
+ }
}
diff --git a/src/main/java/liqp/filters/Strip_HTML.java b/src/main/java/liqp/filters/Strip_HTML.java
index 49b2e401..3798b4fc 100644
--- a/src/main/java/liqp/filters/Strip_HTML.java
+++ b/src/main/java/liqp/filters/Strip_HTML.java
@@ -1,10 +1,21 @@
package liqp.filters;
import liqp.TemplateContext;
-import org.jsoup.Jsoup;
+
+import java.util.regex.Pattern;
public class Strip_HTML extends Filter {
+ // STRIP_HTML_BLOCKS = Regexp.union(
+ // //m,
+ // //m,
+ // //m
+ // )
+ private static final Pattern STRIP_HTML_BLOCKS = Pattern.compile("||", Pattern.MULTILINE);
+
+ // STRIP_HTML_TAGS = /<.*?>/m
+ private static final Pattern STRIP_HTML_TAGS = Pattern.compile("<.*?>", Pattern.MULTILINE);
+
/*
* strip_html(input)
*
@@ -14,7 +25,9 @@ public class Strip_HTML extends Filter {
public Object apply(Object value, TemplateContext context, Object... params) {
String html = super.asString(value, context);
+ html = STRIP_HTML_BLOCKS.matcher(html).replaceAll("");
+ html = STRIP_HTML_TAGS.matcher(html).replaceAll("");
- return Jsoup.parse(html).text();
+ return html;
}
}
diff --git a/src/main/java/liqp/nodes/OutputNode.java b/src/main/java/liqp/nodes/OutputNode.java
index 558122b6..6b0a840f 100644
--- a/src/main/java/liqp/nodes/OutputNode.java
+++ b/src/main/java/liqp/nodes/OutputNode.java
@@ -4,12 +4,13 @@
import liqp.TemplateContext;
import liqp.TemplateParser;
import liqp.exceptions.LiquidException;
-import org.jsoup.internal.StringUtil;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
+import static liqp.LValue.isBlank;
+
public class OutputNode implements LNode {
private LNode expression;
@@ -40,7 +41,7 @@ public Object render(TemplateContext context) {
}
if (context != null && context.getParser().errorMode == TemplateParser.ErrorMode.WARN) {
String localUnparsed = unparsed;
- if (!StringUtil.isBlank(localUnparsed)) {
+ if (!isBlank(localUnparsed)) {
if (localUnparsed.length() > 30) {
localUnparsed = localUnparsed.substring(0, 30) + "...";
}
diff --git a/src/test/java/liqp/filters/Strip_HTMLTest.java b/src/test/java/liqp/filters/Strip_HTMLTest.java
index 710fb088..b950173e 100644
--- a/src/test/java/liqp/filters/Strip_HTMLTest.java
+++ b/src/test/java/liqp/filters/Strip_HTMLTest.java
@@ -52,4 +52,20 @@ public void applyOriginalTest() {
assertThat(filter.apply("", context), is((Object)""));
assertThat(filter.apply(null, context), is((Object)""));
}
+
+
+ @Test
+ public void testIssue306() {
+ // given
+ // {{ "test" | escape }} --> <em>test</em>
+ TemplateContext context = new TemplateContext();
+ Filter filter = Filters.COMMON_FILTERS.get("strip_html");
+
+ // when
+ Object result = filter.apply("<em>test</em>", context);
+
+
+ // then
+ assertThat(result, is("<em>test</em>"));
+ }
}