aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-11-16 20:45:00 +0000
committerMichael Williamson <mike@zwobble.org>2016-11-16 20:45:00 +0000
commit250c8850c4f7e0b2db5146683392fc20485b9339 (patch)
tree728a8067331b6f984fab7f9b1cb7cec5a493e7f3 /src/main/java/org/zwobble
parented66bfe54f283cbf27bed4d5b4bddf0c1bdf4808 (diff)
Introduce HtmlTag class
Diffstat (limited to 'src/main/java/org/zwobble')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/html/Html.java17
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/html/HtmlElement.java22
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/html/HtmlTag.java34
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/HtmlPath.java7
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/HtmlPathElement.java23
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/HtmlPathParser.java3
6 files changed, 63 insertions, 43 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 f0a01dd..4c7a9a9 100644
--- a/src/main/java/org/zwobble/mammoth/internal/html/Html.java
+++ b/src/main/java/org/zwobble/mammoth/internal/html/Html.java
@@ -38,7 +38,7 @@ public class Html {
}
public static HtmlNode element(String tagName, Map<String, String> attributes, List<HtmlNode> children) {
- return new HtmlElement(list(tagName), attributes, children, false);
+ return new HtmlElement(new HtmlTag(list(tagName), attributes, false, ""), children);
}
public static HtmlNode collapsibleElement(String tagName) {
@@ -58,7 +58,7 @@ public class Html {
}
public static HtmlNode collapsibleElement(List<String> tagNames, Map<String, String> attributes, List<HtmlNode> children) {
- return new HtmlElement(tagNames, attributes, children, true);
+ return new HtmlElement(new HtmlTag(tagNames, attributes, true, ""), children);
}
public static HtmlNode selfClosingElement(String tagName) {
@@ -81,11 +81,7 @@ public class Html {
if (children.isEmpty()) {
return list();
} else {
- return list(new HtmlElement(
- element.getTagNames(),
- element.getAttributes(),
- children,
- element.isCollapsible()));
+ return list(new HtmlElement(element.getTag(), children));
}
}
@@ -132,10 +128,9 @@ public class Html {
@Override
public HtmlNode visit(HtmlElement element) {
return new HtmlElement(
- element.getTagNames(),
- element.getAttributes(),
- collapse(element.getChildren()),
- element.isCollapsible());
+ element.getTag(),
+ collapse(element.getChildren())
+ );
}
@Override
diff --git a/src/main/java/org/zwobble/mammoth/internal/html/HtmlElement.java b/src/main/java/org/zwobble/mammoth/internal/html/HtmlElement.java
index e855f26..9999fbc 100644
--- a/src/main/java/org/zwobble/mammoth/internal/html/HtmlElement.java
+++ b/src/main/java/org/zwobble/mammoth/internal/html/HtmlElement.java
@@ -4,28 +4,28 @@ import java.util.List;
import java.util.Map;
public class HtmlElement implements HtmlNode {
- private final List<String> tagNames;
- private final Map<String, String> attributes;
+ private final HtmlTag tag;
private final List<HtmlNode> children;
- private final boolean collapsible;
- public HtmlElement(List<String> tagNames, Map<String, String> attributes, List<HtmlNode> children, boolean collapsible) {
- this.tagNames = tagNames;
- this.attributes = attributes;
+ public HtmlElement(HtmlTag tag, List<HtmlNode> children) {
+ this.tag = tag;
this.children = children;
- this.collapsible = collapsible;
+ }
+
+ public HtmlTag getTag() {
+ return tag;
}
public List<String> getTagNames() {
- return tagNames;
+ return tag.getTagNames();
}
public String getTagName() {
- return tagNames.get(0);
+ return getTagNames().get(0);
}
public Map<String, String> getAttributes() {
- return attributes;
+ return tag.getAttributes();
}
public List<HtmlNode> getChildren() {
@@ -33,7 +33,7 @@ public class HtmlElement implements HtmlNode {
}
public boolean isCollapsible() {
- return collapsible;
+ return tag.isCollapsible();
}
@Override
diff --git a/src/main/java/org/zwobble/mammoth/internal/html/HtmlTag.java b/src/main/java/org/zwobble/mammoth/internal/html/HtmlTag.java
new file mode 100644
index 0000000..ea42206
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/internal/html/HtmlTag.java
@@ -0,0 +1,34 @@
+package org.zwobble.mammoth.internal.html;
+
+import java.util.List;
+import java.util.Map;
+
+public class HtmlTag {
+ private final List<String> tagNames;
+ private final Map<String, String> attributes;
+ private final boolean isCollapsible;
+ private final String separator;
+
+ public HtmlTag(List<String> tagNames, Map<String, String> attributes, boolean isCollapsible, String separator) {
+ this.tagNames = tagNames;
+ this.attributes = attributes;
+ this.isCollapsible = isCollapsible;
+ this.separator = separator;
+ }
+
+ public List<String> getTagNames() {
+ return tagNames;
+ }
+
+ public Map<String, String> getAttributes() {
+ return attributes;
+ }
+
+ public boolean isCollapsible() {
+ return isCollapsible;
+ }
+
+ public String getSeparator() {
+ return separator;
+ }
+}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPath.java b/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPath.java
index 0a5c300..64afaf4 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPath.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPath.java
@@ -1,6 +1,7 @@
package org.zwobble.mammoth.internal.styles;
import org.zwobble.mammoth.internal.html.HtmlNode;
+import org.zwobble.mammoth.internal.html.HtmlTag;
import java.util.List;
import java.util.Map;
@@ -23,7 +24,8 @@ public interface HtmlPath {
}
static HtmlPath element(String tagName, Map<String, String> attributes) {
- return new HtmlPathElements(list(new HtmlPathElement(list(tagName), attributes, false, "")));
+ HtmlTag tag = new HtmlTag(list(tagName), attributes, false, "");
+ return new HtmlPathElements(list(new HtmlPathElement(tag)));
}
static HtmlPath collapsibleElement(String tagName) {
@@ -39,7 +41,8 @@ public interface HtmlPath {
}
static HtmlPath collapsibleElement(List<String> tagNames, Map<String, String> attributes) {
- return new HtmlPathElements(list(new HtmlPathElement(tagNames, attributes, true, "")));
+ HtmlTag tag = new HtmlTag(tagNames, attributes, true, "");
+ return new HtmlPathElements(list(new HtmlPathElement(tag)));
}
Supplier<List<HtmlNode>> wrap(Supplier<List<HtmlNode>> generateNodes);
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPathElement.java b/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPathElement.java
index 1be14af..dc9a60e 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPathElement.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPathElement.java
@@ -2,6 +2,7 @@ package org.zwobble.mammoth.internal.styles;
import org.zwobble.mammoth.internal.html.HtmlElement;
import org.zwobble.mammoth.internal.html.HtmlNode;
+import org.zwobble.mammoth.internal.html.HtmlTag;
import java.util.List;
import java.util.Map;
@@ -11,24 +12,10 @@ import static org.zwobble.mammoth.internal.util.Lists.list;
import static org.zwobble.mammoth.internal.util.Maps.map;
public class HtmlPathElement {
- public static HtmlPathElement collapsible(String tagName) {
- return collapsible(tagName, map());
- }
-
- public static HtmlPathElement collapsible(String tagName, Map<String, String> attributes) {
- return new HtmlPathElement(list(tagName), attributes, true, "");
- }
-
- private final List<String> tagNames;
- private final Map<String, String> attributes;
- private final boolean isCollapsible;
- private final String separator;
+ private final HtmlTag tag;
- public HtmlPathElement(List<String> tagNames, Map<String, String> attributes, boolean isCollapsible, String separator) {
- this.tagNames = tagNames;
- this.attributes = attributes;
- this.isCollapsible = isCollapsible;
- this.separator = separator;
+ public HtmlPathElement(HtmlTag tag) {
+ this.tag = tag;
}
public Supplier<List<HtmlNode>> wrap(Supplier<List<HtmlNode>> generateNodes) {
@@ -36,6 +23,6 @@ public class HtmlPathElement {
}
private List<HtmlNode> wrapNodes(List<HtmlNode> nodes) {
- return list(new HtmlElement(tagNames, attributes, nodes, isCollapsible));
+ return list(new HtmlElement(tag, nodes));
}
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/HtmlPathParser.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/HtmlPathParser.java
index a509bbb..ef975f6 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/HtmlPathParser.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/HtmlPathParser.java
@@ -1,5 +1,6 @@
package org.zwobble.mammoth.internal.styles.parsing;
+import org.zwobble.mammoth.internal.html.HtmlTag;
import org.zwobble.mammoth.internal.styles.HtmlPath;
import org.zwobble.mammoth.internal.styles.HtmlPathElement;
import org.zwobble.mammoth.internal.styles.HtmlPathElements;
@@ -45,7 +46,7 @@ public class HtmlPathParser {
: map("class", String.join(" ", classNames));
boolean isFresh = parseIsFresh(tokens);
String separator = parseSeparator(tokens);
- return new HtmlPathElement(tagNames, attributes, !isFresh, separator);
+ return new HtmlPathElement(new HtmlTag(tagNames, attributes, !isFresh, separator));
}
private static List<String> parseTagNames(TokenIterator<TokenType> tokens) {