Skip to content

Commit b4c604f

Browse files
committed
Using document traversal to close HTML tags
1 parent daf2c84 commit b4c604f

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

src/main/java/com/hubspot/jinjava/lib/filter/CloseHtmlFilter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.hubspot.jinjava.interpret.JinjavaInterpreter;
77
import java.util.Objects;
88
import org.jsoup.Jsoup;
9+
import org.jsoup.safety.Safelist;
910

1011
@JinjavaDoc(
1112
value = "Closes open HTML tags in a string",
@@ -21,6 +22,6 @@ public String getName() {
2122

2223
@Override
2324
public Object filter(Object var, JinjavaInterpreter interpreter, String... args) {
24-
return Jsoup.parse(Objects.toString(var)).toString();
25+
return Jsoup.parseBodyFragment(Objects.toString(var)).body().html();
2526
}
2627
}

src/test/java/com/hubspot/jinjava/lib/filter/CloseHtmlFilterTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,17 @@ public void itClosesTags() {
2121
String openTags = "<p>Hello, world!";
2222
assertThat(f.filter(openTags, interpreter)).isEqualTo("<p>Hello, world!</p>");
2323
}
24+
25+
@Test
26+
public void itIgnoresClosedTags() {
27+
String openTags = "<p>Hello, world!</p>";
28+
assertThat(f.filter(openTags, interpreter)).isEqualTo("<p>Hello, world!</p>");
29+
}
30+
31+
@Test
32+
public void itClosesMultipleTags() {
33+
String openTags = "<h1><p>Hello, world!";
34+
assertThat(f.filter(openTags, interpreter))
35+
.isEqualTo("<h1><p>Hello, world!</p></h1>");
36+
}
2437
}

0 commit comments

Comments
 (0)