diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-08-28 23:19:56 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-08-28 23:19:56 +0100 |
| commit | 96946693f624f00170cd5b29476c013f1e4798e4 (patch) | |
| tree | 2978aa2ae58cace54c5edf1801db358655662b3d /src/main/java/org/zwobble | |
| parent | a55bb3b713dd4f38e95b98acbf284dc22077f7eb (diff) | |
Extract interface from HtmlPath
Diffstat (limited to 'src/main/java/org/zwobble')
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) { |
