aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-02-21 21:23:52 +0000
committerMichael Williamson <mike@zwobble.org>2016-02-21 21:23:52 +0000
commitc72cec263e12d18cd6fe35c1b224f5b68c587f11 (patch)
treed9adb11277d0ff9bb9b9d2526b03501f15842034
parentc36b72bf0a6ba24ef5f1151f3fed71bcb44654d4 (diff)
Set type parameter of BaseParser to remove cast
-rw-r--r--src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java b/src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java
index 43f9b4c..be0a268 100644
--- a/src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java
+++ b/src/main/java/org/zwobble/mammoth/styles/StyleMapParser.java
@@ -13,32 +13,30 @@ import java.util.List;
import static org.zwobble.mammoth.util.MammothLists.list;
import static org.zwobble.mammoth.util.MammothMaps.map;
-public class StyleMapParser extends BaseParser<Object> {
+public class StyleMapParser extends BaseParser<HtmlPath> {
public static HtmlPath parseHtmlPath(String value) {
StyleMapParser parser = Parboiled.createParser(StyleMapParser.class);
- ReportingParseRunner runner = new ReportingParseRunner(parser.HtmlPath());
- ParsingResult<?> result = runner.run(value);
+ ReportingParseRunner<HtmlPath> runner = new ReportingParseRunner<>(parser.HtmlPath());
+ ParsingResult<HtmlPath> result = runner.run(value);
if (result.hasErrors()) {
// TODO: wrap in result
throw new RuntimeException("Parse error");
} else {
- return (HtmlPath) result.valueStack.peek();
+ return result.valueStack.peek();
}
}
Rule HtmlPath() {
ListVar<HtmlPathElement> elements = new ListVar<>();
- return Sequence(HtmlPathElements(elements), EOI, push(new HtmlPath(elements.build())));
+ return Sequence(Optional(HtmlPathElements(elements)), EOI, push(new HtmlPath(elements.build())));
}
Rule HtmlPathElements(ListVar<HtmlPathElement> elements) {
Var<HtmlPathElement> element = new Var<>();
- return FirstOf(
- Sequence(
- HtmlPathElement(element),
- elements.append(element),
- ZeroOrMore(Sequence(Whitespace(), Ch('>'), Whitespace(), HtmlPathElement(element), elements.append(element)))),
- toRule(push(ImmutableList.builder())));
+ return Sequence(
+ HtmlPathElement(element),
+ elements.append(element),
+ ZeroOrMore(Sequence(Whitespace(), Ch('>'), Whitespace(), HtmlPathElement(element), elements.append(element))));
}
Rule HtmlPathElement(Var<HtmlPathElement> element) {