diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-04-30 16:39:18 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-04-30 16:39:18 +0100 |
| commit | 5a6b58e7b1f36c2858ae60710d289c4760c7d566 (patch) | |
| tree | 705754bd31f7ef81e18e204f931ddbc1dbefcd60 /src/main/java | |
| parent | 06195a2e0a98d670e732411ab9826dcb0d56cbbf (diff) | |
Include original line in parse exception
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/internal/styles/parsing/ParseException.java | 19 | ||||
| -rw-r--r-- | src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMapParser.java | 5 |
2 files changed, 20 insertions, 4 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/ParseException.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/ParseException.java index 832a673..40fb16b 100644 --- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/ParseException.java +++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/ParseException.java @@ -1,7 +1,22 @@ package org.zwobble.mammoth.internal.styles.parsing; public class ParseException extends RuntimeException { - public ParseException(int lineNumber, Token token, String message) { - super("error reading style map at line " + lineNumber + ", character " + (token.getCharacterIndex() + 1) + ": " + message); + public ParseException(String line, int lineNumber, Token token, String message) { + super(generateMessage(line, lineNumber, token, message)); + } + + private static String generateMessage(String line, int lineNumber, Token token, String message) { + return "error reading style map at line " + lineNumber + ", character " + (token.getCharacterIndex() + 1) + + ": " + message + "\n\n" + + line + "\n" + + repeatString(" ", token.getCharacterIndex()) + "^"; + } + + private static String repeatString(String value, int times) { + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < times; i++) { + builder.append(value); + } + return builder.toString(); } } diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMapParser.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMapParser.java index c22e1e6..d1ceb72 100644 --- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMapParser.java +++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMapParser.java @@ -18,10 +18,11 @@ public class StyleMapParser { public static StyleMap parseStyleMappings(List<String> lines) { StyleMapBuilder styleMap = StyleMap.builder(); for (int lineIndex = 0; lineIndex < lines.size(); lineIndex += 1) { + String line = lines.get(lineIndex); try { - handleLine(styleMap, lines.get(lineIndex)); + handleLine(styleMap, line); } catch (LineParseException exception) { - throw new ParseException(lineIndex + 1, exception.getToken(), exception.getMessage()); + throw new ParseException(line, lineIndex + 1, exception.getToken(), exception.getMessage()); } } return styleMap.build(); |
