diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-14 13:05:15 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-14 13:05:15 +0000 |
| commit | a16024ff4f70a5cf0029c475d1dc8e2499a44e94 (patch) | |
| tree | b5b900ac2a5a45d9ede9ff20b45da60721955b7a /src/main/java/org/zwobble/mammoth/html/HtmlWriter.java | |
| parent | a82d898bc1c6901749f89a905e63c9e511baae84 (diff) | |
Do all HTML writing in HtmlWriter
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/html/HtmlWriter.java')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/html/HtmlWriter.java | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/html/HtmlWriter.java b/src/main/java/org/zwobble/mammoth/html/HtmlWriter.java index 50bf85b..bb98925 100644 --- a/src/main/java/org/zwobble/mammoth/html/HtmlWriter.java +++ b/src/main/java/org/zwobble/mammoth/html/HtmlWriter.java @@ -5,6 +5,38 @@ import java.util.Map; import static org.zwobble.mammoth.util.MammothLists.orderedBy; public class HtmlWriter { + public static void write(HtmlNode node, StringBuilder builder) { + node.visit(new HtmlNode.Visitor() { + @Override + public void visit(HtmlElement element) { + builder.append("<").append(element.getTagName()); + + HtmlWriter.generateAttributes(element.getAttributes(), builder); + + builder.append(">"); + + element.getChildren().forEach(node -> write(node, builder)); + + builder + .append("</") + .append(element.getTagName()) + .append(">"); + } + + @Override + public void visit(HtmlSelfClosingElement element) { + builder.append("<").append(element.getTagName()); + HtmlWriter.generateAttributes(element.getAttributes(), builder); + builder.append(" />"); + } + + @Override + public void visit(HtmlTextNode node) { + builder.append(HtmlWriter.escapeText(node.getValue())); + } + }); + } + public static String escapeText(String text) { return text.replace("&", "&").replace("<", "<").replace(">", ">"); } |
