aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-08-28 23:19:56 +0100
committerMichael Williamson <mike@zwobble.org>2016-08-28 23:19:56 +0100
commit96946693f624f00170cd5b29476c013f1e4798e4 (patch)
tree2978aa2ae58cace54c5edf1801db358655662b3d /src/main
parenta55bb3b713dd4f38e95b98acbf284dc22077f7eb (diff)
Extract interface from HtmlPath
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/HtmlPath.java39
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/HtmlPathElements.java24
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/HtmlPathParser.java3
3 files changed, 42 insertions, 24 deletions
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 979f292..ee81dcf 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPath.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPath.java
@@ -6,47 +6,40 @@ import java.util.List;
import java.util.Map;
import java.util.function.Supplier;
+import static java.util.Arrays.asList;
import static org.zwobble.mammoth.internal.util.Lists.list;
-import static org.zwobble.mammoth.internal.util.Lists.reversed;
import static org.zwobble.mammoth.internal.util.Maps.map;
-public class HtmlPath {
- public static final HtmlPath EMPTY = new HtmlPath(list());
+public interface HtmlPath {
+ HtmlPath EMPTY = new HtmlPathElements(list());
- public static HtmlPath element(String tagName) {
+ static HtmlPath elements(HtmlPathElement... elements) {
+ return new HtmlPathElements(asList(elements));
+ }
+
+ static HtmlPath element(String tagName) {
return element(tagName, map());
}
- public static HtmlPath element(String tagName, Map<String, String> attributes) {
- return new HtmlPath(list(new HtmlPathElement(list(tagName), attributes, false)));
+ static HtmlPath element(String tagName, Map<String, String> attributes) {
+ return new HtmlPathElements(list(new HtmlPathElement(list(tagName), attributes, false)));
}
- public static HtmlPath collapsibleElement(String tagName) {
+ static HtmlPath collapsibleElement(String tagName) {
return collapsibleElement(tagName, map());
}
- public static HtmlPath collapsibleElement(List<String> tagNames) {
+ static HtmlPath collapsibleElement(List<String> tagNames) {
return collapsibleElement(tagNames, map());
}
- public static HtmlPath collapsibleElement(String tagName, Map<String, String> attributes) {
+ static HtmlPath collapsibleElement(String tagName, Map<String, String> attributes) {
return collapsibleElement(list(tagName), attributes);
}
- public static HtmlPath collapsibleElement(List<String> tagNames, Map<String, String> attributes) {
- return new HtmlPath(list(new HtmlPathElement(tagNames, attributes, true)));
- }
-
- private final List<HtmlPathElement> elements;
-
- public HtmlPath(List<HtmlPathElement> elements) {
- this.elements = elements;
+ static HtmlPath collapsibleElement(List<String> tagNames, Map<String, String> attributes) {
+ return new HtmlPathElements(list(new HtmlPathElement(tagNames, attributes, true)));
}
- public Supplier<List<HtmlNode>> wrap(Supplier<List<HtmlNode>> generateNodes) {
- for (HtmlPathElement element : reversed(elements)) {
- generateNodes = element.wrap(generateNodes);
- }
- return generateNodes;
- }
+ Supplier<List<HtmlNode>> wrap(Supplier<List<HtmlNode>> generateNodes);
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPathElements.java b/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPathElements.java
new file mode 100644
index 0000000..45bd75a
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/HtmlPathElements.java
@@ -0,0 +1,24 @@
+package org.zwobble.mammoth.internal.styles;
+
+import org.zwobble.mammoth.internal.html.HtmlNode;
+
+import java.util.List;
+import java.util.function.Supplier;
+
+import static org.zwobble.mammoth.internal.util.Lists.reversed;
+
+public class HtmlPathElements implements HtmlPath {
+ private final List<HtmlPathElement> elements;
+
+ public HtmlPathElements(List<HtmlPathElement> elements) {
+ this.elements = elements;
+ }
+
+ @Override
+ public Supplier<List<HtmlNode>> wrap(Supplier<List<HtmlNode>> generateNodes) {
+ for (HtmlPathElement element : reversed(elements)) {
+ generateNodes = element.wrap(generateNodes);
+ }
+ return generateNodes;
+ }
+}
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 105504c..1589494 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
@@ -2,6 +2,7 @@ package org.zwobble.mammoth.internal.styles.parsing;
import org.zwobble.mammoth.internal.styles.HtmlPath;
import org.zwobble.mammoth.internal.styles.HtmlPathElement;
+import org.zwobble.mammoth.internal.styles.HtmlPathElements;
import java.util.ArrayList;
import java.util.List;
@@ -24,7 +25,7 @@ public class HtmlPathParser {
}
}
- return new HtmlPath(elements);
+ return new HtmlPathElements(elements);
}
private static HtmlPathElement parseElement(TokenIterator tokens) {