diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-14 10:55:30 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-14 10:55:30 +0000 |
| commit | 5c8c5d57d37f4411630828e3c658bb23e10e207b (patch) | |
| tree | 14eb75e959aa2abf41c1b43f1289e965562aaa0e /src/main/java/org/zwobble/mammoth/html | |
| parent | 58529640fec589e7f476eb73b7cf49292de60f01 (diff) | |
Generate HTML using HTML AST
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/html')
4 files changed, 66 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/mammoth/html/Html.java b/src/main/java/org/zwobble/mammoth/html/Html.java new file mode 100644 index 0000000..9b6ccbb --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/html/Html.java @@ -0,0 +1,19 @@ +package org.zwobble.mammoth.html; + +import java.util.List; + +public class Html { + public static String write(List<HtmlNode> nodes) { + StringBuilder builder = new StringBuilder(); + nodes.forEach(node -> node.write(builder)); + return builder.toString(); + } + + public static HtmlNode text(String value) { + return new HtmlTextNode(value); + } + + public static HtmlNode element(String tagName, List<HtmlNode> children) { + return new HtmlElementNode(tagName, children); + } +} diff --git a/src/main/java/org/zwobble/mammoth/html/HtmlElementNode.java b/src/main/java/org/zwobble/mammoth/html/HtmlElementNode.java new file mode 100644 index 0000000..34de63e --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/html/HtmlElementNode.java @@ -0,0 +1,28 @@ +package org.zwobble.mammoth.html; + +import java.util.List; + +public class HtmlElementNode implements HtmlNode { + private final String tagName; + private final List<HtmlNode> children; + + public HtmlElementNode(String tagName, List<HtmlNode> children) { + this.tagName = tagName; + this.children = children; + } + + @Override + public void write(StringBuilder builder) { + builder + .append("<") + .append(tagName) + .append(">"); + + children.forEach(node -> node.write(builder)); + + builder + .append("</") + .append(tagName) + .append(">"); + } +} diff --git a/src/main/java/org/zwobble/mammoth/html/HtmlNode.java b/src/main/java/org/zwobble/mammoth/html/HtmlNode.java new file mode 100644 index 0000000..9977c66 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/html/HtmlNode.java @@ -0,0 +1,5 @@ +package org.zwobble.mammoth.html; + +public interface HtmlNode { + void write(StringBuilder builder); +} diff --git a/src/main/java/org/zwobble/mammoth/html/HtmlTextNode.java b/src/main/java/org/zwobble/mammoth/html/HtmlTextNode.java new file mode 100644 index 0000000..2c3a7c2 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/html/HtmlTextNode.java @@ -0,0 +1,14 @@ +package org.zwobble.mammoth.html; + +public class HtmlTextNode implements HtmlNode { + private final String value; + + public HtmlTextNode(String value) { + this.value = value; + } + + @Override + public void write(StringBuilder builder) { + builder.append(value); + } +} |
