aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
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();