From c36b72bf0a6ba24ef5f1151f3fed71bcb44654d4 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 21 Feb 2016 21:21:08 +0000 Subject: Parse choice of tag names in HTML paths --- .../org/zwobble/mammoth/styles/StyleMapParser.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java') 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 { } Rule HtmlPathElement(Var element) { - Var tagName = new Var<>(); + ListVar tagNames = new ListVar<>(); ListVar classNames = new ListVar<>(); Var 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 tagName) { - return Sequence(Identifier(), tagName.set(match())); + Rule TagNames(ListVar tagNames) { + return Sequence( + Identifier(), + tagNames.append(match()), + ZeroOrMore(Sequence("|", Identifier(), tagNames.append(match())))); } Rule ClassNames(ListVar classNames) { @@ -84,10 +87,14 @@ public class StyleMapParser extends BaseParser { class ListVar extends Var> { boolean append(Var 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 build() { -- cgit v1.2.3