aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-30 16:32:09 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-30 16:32:09 +0100
commit06195a2e0a98d670e732411ab9826dcb0d56cbbf (patch)
treeca99750ca3fadbe5ce4c95ee3021bf28d24d1711 /src/main/java/org
parent4b9118b4c0a913e0788b0937998d3ee091c8a12d (diff)
Include line number in parse failures
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/LineParseException.java14
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/ParseException.java4
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/StyleMapParser.java8
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenIterator.java6
5 files changed, 27 insertions, 9 deletions
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java
index 418b4be..90b9ba0 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java
@@ -29,7 +29,7 @@ public class DocumentMatcherParser {
case "strike":
return StyleMapBuilder::strikethrough;
default:
- throw new ParseException(identifier, "Unrecognised document element: " + identifier);
+ throw new LineParseException(identifier, "Unrecognised document element: " + identifier);
}
}
@@ -89,7 +89,7 @@ public class DocumentMatcherParser {
case "unordered-list":
return false;
default:
- throw new ParseException(listType, "Unrecognised list type: " + listType);
+ throw new LineParseException(listType, "Unrecognised list type: " + listType);
}
}
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/LineParseException.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/LineParseException.java
new file mode 100644
index 0000000..944e7f1
--- /dev/null
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/LineParseException.java
@@ -0,0 +1,14 @@
+package org.zwobble.mammoth.internal.styles.parsing;
+
+class LineParseException extends RuntimeException {
+ private final Token token;
+
+ LineParseException(Token token, String message) {
+ super(message);
+ this.token = token;
+ }
+
+ public Token getToken() {
+ return token;
+ }
+}
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 61a7c22..832a673 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,7 @@
package org.zwobble.mammoth.internal.styles.parsing;
public class ParseException extends RuntimeException {
- public ParseException(Token token, String message) {
- super("error reading style map at character " + (token.getCharacterIndex() + 1) + ": " + message);
+ public ParseException(int lineNumber, Token token, String message) {
+ super("error reading style map at line " + lineNumber + ", character " + (token.getCharacterIndex() + 1) + ": " + message);
}
}
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 9e8e8c9..c22e1e6 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
@@ -17,8 +17,12 @@ public class StyleMapParser {
public static StyleMap parseStyleMappings(List<String> lines) {
StyleMapBuilder styleMap = StyleMap.builder();
- for (String line : lines) {
- handleLine(styleMap, line);
+ for (int lineIndex = 0; lineIndex < lines.size(); lineIndex += 1) {
+ try {
+ handleLine(styleMap, lines.get(lineIndex));
+ } catch (LineParseException exception) {
+ throw new ParseException(lineIndex + 1, exception.getToken(), exception.getMessage());
+ }
}
return styleMap.build();
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenIterator.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenIterator.java
index 7ee27e9..805e5f0 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenIterator.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenIterator.java
@@ -52,12 +52,12 @@ public class TokenIterator {
}
String actualValue = token.getValue();
if (!actualValue.equals(tokenValue)) {
- throw new ParseException(token, "expected " + tokenType + " token with value " + tokenValue + " but value was " + actualValue);
+ throw new LineParseException(token, "expected " + tokenType + " token with value " + tokenValue + " but value was " + actualValue);
}
index += 1;
}
- private ParseException unexpectedTokenType(TokenType expected, Token actual) {
- return new ParseException(actual, "expected token of type " + expected + " but was of type " + actual.getTokenType());
+ private LineParseException unexpectedTokenType(TokenType expected, Token actual) {
+ return new LineParseException(actual, "expected token of type " + expected + " but was of type " + actual.getTokenType());
}
}