diff options
Diffstat (limited to 'src/main/java/org/zwobble')
3 files changed, 26 insertions, 7 deletions
diff --git a/src/main/java/org/zwobble/mammoth/styles/HtmlPath.java b/src/main/java/org/zwobble/mammoth/styles/HtmlPath.java index ee78237..93fd0fa 100644 --- a/src/main/java/org/zwobble/mammoth/styles/HtmlPath.java +++ b/src/main/java/org/zwobble/mammoth/styles/HtmlPath.java @@ -24,8 +24,16 @@ public class HtmlPath { return collapsibleElement(tagName, map()); } + public static HtmlPath collapsibleElement(List<String> tagNames) { + return collapsibleElement(tagNames, map()); + } + public static HtmlPath collapsibleElement(String tagName, Map<String, String> attributes) { - return new HtmlPath(list(new HtmlPathElement(list(tagName), attributes, true))); + 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; diff --git a/src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java b/src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java index 4e18948..43f9b4c 100644 --- a/src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java +++ b/src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java @@ -42,21 +42,24 @@ public class StyleMapParser extends BaseParser<Object> { } Rule HtmlPathElement(Var<HtmlPathElement> element) { - Var<String> tagName = new Var<>(); + ListVar<String> tagNames = new ListVar<>(); ListVar<String> classNames = new ListVar<>(); Var<Boolean> fresh = new Var<>(); return Sequence( - TagNames(tagName), + TagNames(tagNames), ClassNames(classNames), Fresh(fresh), element.set(new HtmlPathElement( - list(tagName.get()), + tagNames.build(), classNames.isEmpty() ? map() : map("class", String.join(" ", classNames.build())), !fresh.get()))); } - Rule TagNames(Var<String> tagName) { - return Sequence(Identifier(), tagName.set(match())); + Rule TagNames(ListVar<String> tagNames) { + return Sequence( + Identifier(), + tagNames.append(match()), + ZeroOrMore(Sequence("|", Identifier(), tagNames.append(match())))); } Rule ClassNames(ListVar<String> classNames) { @@ -84,10 +87,14 @@ public class StyleMapParser extends BaseParser<Object> { class ListVar<T> extends Var<ImmutableList.Builder<T>> { boolean append(Var<T> element) { + return append(element.get()); + } + + boolean append(T element) { if (get() == null) { set(ImmutableList.builder()); } - return set(get().add(element.get())); + return set(get().add(element)); } public List<T> build() { diff --git a/src/main/java/org/zwobble/mammoth/util/MammothLists.java b/src/main/java/org/zwobble/mammoth/util/MammothLists.java index 497d1b3..bbdaa7b 100644 --- a/src/main/java/org/zwobble/mammoth/util/MammothLists.java +++ b/src/main/java/org/zwobble/mammoth/util/MammothLists.java @@ -20,6 +20,10 @@ public class MammothLists { return ImmutableList.of(value1, value2); } + public static <T> List<T> list(T value1, T value2, T value3) { + return ImmutableList.of(value1, value2, value3); + } + public static <T> List<T> cons(T head, Iterable<T> tail) { return concat(list(head), tail); } |
