From 14a07f679a1ad1726445f363fee484e3b2d52884 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Tue, 23 Feb 2016 19:49:30 +0000 Subject: Move HTML path parsing rules into their own class --- .../zwobble/mammoth/styles/parsing/Parsing.java | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/main/java/org/zwobble/mammoth/styles/parsing/Parsing.java (limited to 'src/main/java/org/zwobble/mammoth/styles/parsing/Parsing.java') diff --git a/src/main/java/org/zwobble/mammoth/styles/parsing/Parsing.java b/src/main/java/org/zwobble/mammoth/styles/parsing/Parsing.java new file mode 100644 index 0000000..761e7b8 --- /dev/null +++ b/src/main/java/org/zwobble/mammoth/styles/parsing/Parsing.java @@ -0,0 +1,23 @@ +package org.zwobble.mammoth.styles.parsing; + +import org.parboiled.BaseParser; +import org.parboiled.Parboiled; +import org.parboiled.Rule; +import org.parboiled.parserunners.ReportingParseRunner; +import org.parboiled.support.ParsingResult; + +import java.util.function.Function; + +public class Parsing { + public static > T parse(Class parserType, Function rule, String value) { + U parser = Parboiled.createParser(parserType); + ReportingParseRunner runner = new ReportingParseRunner<>(rule.apply(parser)); + ParsingResult result = runner.run(value); + if (result.hasErrors()) { + // TODO: wrap in result + throw new RuntimeException("Parse error"); + } else { + return result.valueStack.peek(); + } + } +} -- cgit v1.2.3