aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-30 16:39:18 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-30 16:39:18 +0100
commit5a6b58e7b1f36c2858ae60710d289c4760c7d566 (patch)
tree705754bd31f7ef81e18e204f931ddbc1dbefcd60 /src/main/java
parent06195a2e0a98d670e732411ab9826dcb0d56cbbf (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.java19
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMapParser.java5
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();