aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java')
-rw-r--r--src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java19
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() {