diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-11-28 16:18:23 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-11-28 16:18:23 +0000 |
| commit | 559101b2464a9e5299c05adfac4a1fac8af8ef23 (patch) | |
| tree | 118e2ec7e079ed96e644a6674e673e8052ac09ca /src/main/java/org/zwobble/mammoth/internal/html/Html.java | |
| parent | f78189def02911d1de26db1d60eefcaf935ffbbf (diff) | |
Use HtmlElement for void elements
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.java | 32 |
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); + } } |
