From c72cec263e12d18cd6fe35c1b224f5b68c587f11 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 21 Feb 2016 21:23:52 +0000 Subject: Set type parameter of BaseParser to remove cast --- .../org/zwobble/mammoth/styles/StyleMapParser.java | 20 +++++++++----------- 1 file 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 { +public class StyleMapParser extends BaseParser { public static HtmlPath parseHtmlPath(String value) { StyleMapParser parser = Parboiled.createParser(StyleMapParser.class); - ReportingParseRunner runner = new ReportingParseRunner(parser.HtmlPath()); - ParsingResult result = runner.run(value); + ReportingParseRunner runner = new ReportingParseRunner<>(parser.HtmlPath()); + ParsingResult 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 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 elements) { Var 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 element) { -- cgit v1.2.3