diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-21 21:21:08 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-21 21:21:08 +0000 |
| commit | c36b72bf0a6ba24ef5f1151f3fed71bcb44654d4 (patch) | |
| tree | dedfa53aa8dc04c88177ef137cf6f2b1f946eb6e /src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java | |
| parent | 332528a1aad8774bb20fb47ac2a0958d88e67716 (diff) | |
Parse choice of tag names in HTML paths
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java | 19 |
1 files changed, 13 insertions, 6 deletions
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() { |
