aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/internal/html/Html.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/internal/html/Html.java')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/html/Html.java32
1 files changed, 13 insertions, 19 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/html/Html.java b/src/main/java/org/zwobble/mammoth/internal/html/Html.java
index a3724bf..7669c6e 100644
--- a/src/main/java/org/zwobble/mammoth/internal/html/Html.java
+++ b/src/main/java/org/zwobble/mammoth/internal/html/Html.java
@@ -6,11 +6,13 @@ import org.zwobble.mammoth.internal.util.Optionals;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import static org.zwobble.mammoth.internal.util.Casts.tryCast;
import static org.zwobble.mammoth.internal.util.Lists.list;
import static org.zwobble.mammoth.internal.util.Lists.tryGetLast;
import static org.zwobble.mammoth.internal.util.Maps.map;
+import static org.zwobble.mammoth.internal.util.Sets.set;
public class Html {
public static final HtmlNode FORCE_WRITE = HtmlForceWrite.FORCE_WRITE;
@@ -61,14 +63,6 @@ public class Html {
return new HtmlElement(new HtmlTag(tagNames, attributes, true, ""), children);
}
- public static HtmlNode selfClosingElement(String tagName) {
- return selfClosingElement(tagName, map());
- }
-
- public static HtmlNode selfClosingElement(String tagName, Map<String, String> attributes) {
- return new HtmlSelfClosingElement(tagName, attributes);
- }
-
public static List<HtmlNode> stripEmpty(List<HtmlNode> nodes) {
return Lists.eagerFlatMap(nodes, node -> stripEmpty(node));
}
@@ -78,7 +72,7 @@ public class Html {
@Override
public List<HtmlNode> visit(HtmlElement element) {
List<HtmlNode> children = stripEmpty(element.getChildren());
- if (children.isEmpty()) {
+ if (children.isEmpty() && !isVoidElement(element)) {
return list();
} else {
return list(new HtmlElement(element.getTag(), children));
@@ -86,11 +80,6 @@ public class Html {
}
@Override
- public List<HtmlNode> visit(HtmlSelfClosingElement element) {
- return list(element);
- }
-
- @Override
public List<HtmlNode> visit(HtmlTextNode node) {
if (node.getValue().isEmpty()) {
return list();
@@ -134,11 +123,6 @@ public class Html {
}
@Override
- public HtmlNode visit(HtmlSelfClosingElement element) {
- return element;
- }
-
- @Override
public HtmlNode visit(HtmlTextNode node) {
return node;
}
@@ -175,4 +159,14 @@ public class Html {
return second.getTagNames().contains(first.getTagName()) &&
first.getAttributes().equals(second.getAttributes());
}
+
+ static boolean isVoidElement(HtmlElement element) {
+ return element.getChildren().isEmpty() && isVoidTag(element.getTagName());
+ }
+
+ private static final Set<String> VOID_TAG_NAMES = set("img", "br");
+
+ private static boolean isVoidTag(String tagName) {
+ return VOID_TAG_NAMES.contains(tagName);
+ }
}