diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-23 19:49:30 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-23 19:49:30 +0000 |
| commit | 14a07f679a1ad1726445f363fee484e3b2d52884 (patch) | |
| tree | 189d161601312119c027e00230cb82e09078b7e5 /src/main/java/org/zwobble/mammoth/styles/parsing/Parsing.java | |
| parent | c72cec263e12d18cd6fe35c1b224f5b68c587f11 (diff) | |
Move HTML path parsing rules into their own class
Diffstat (limited to 'src/main/java/org/zwobble/mammoth/styles/parsing/Parsing.java')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/styles/parsing/Parsing.java | 23 |
1 files changed, 23 insertions, 0 deletions
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, U extends BaseParser<T>> T parse(Class<U> parserType, Function<U, Rule> rule, String value) { + U parser = Parboiled.createParser(parserType); + ReportingParseRunner<T> runner = new ReportingParseRunner<>(rule.apply(parser)); + ParsingResult<T> result = runner.run(value); + if (result.hasErrors()) { + // TODO: wrap in result + throw new RuntimeException("Parse error"); + } else { + return result.valueStack.peek(); + } + } +} |
