aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-11-28 16:34:20 +0000
committerMichael Williamson <mike@zwobble.org>2016-11-28 16:34:20 +0000
commitb6eabe382e59235192691b5bf04a172ce333ec24 (patch)
treee15d80da7905a4f4e2eeba6b7a738c5ec4d8d6e8 /src/main/java
parentdc6e1277e8255a37727951b78ba5c8fd52de12ed (diff)
Add parsing for break style mappings
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/DocumentMatcherParser.java20
-rw-r--r--src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenParser.java6
2 files changed, 25 insertions, 1 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 7615e65..7586393 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
@@ -27,6 +27,9 @@ public class DocumentMatcherParser {
return StyleMapBuilder::strikethrough;
case "comment-reference":
return StyleMapBuilder::commentReference;
+ case "br":
+ BreakMatcher breakMatcher = parseBreakMatcher(tokens);
+ return (builder, path) -> builder.mapBreak(breakMatcher, path);
default:
throw new LineParseException(identifier, "Unrecognised document element: " + identifier);
}
@@ -93,4 +96,21 @@ public class DocumentMatcherParser {
throw new LineParseException(listType, "Unrecognised list type: " + listType);
}
}
+
+ private static BreakMatcher parseBreakMatcher(TokenIterator<TokenType> tokens) {
+ tokens.skip(TokenType.SYMBOL, "[");
+ tokens.skip(TokenType.IDENTIFIER, "type");
+ tokens.skip(TokenType.SYMBOL, "=");
+ Token<TokenType> stringToken = tokens.next(TokenType.STRING);
+ tokens.skip(TokenType.SYMBOL, "]");
+ String typeName = TokenParser.parseStringToken(stringToken);
+ switch (typeName) {
+ case "line":
+ return BreakMatcher.LINE_BREAK;
+ case "page":
+ return BreakMatcher.PAGE_BREAK;
+ default:
+ throw new LineParseException(stringToken, "Unrecognised break type: " + typeName);
+ }
+ }
}
diff --git a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenParser.java b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenParser.java
index 1131da5..78052eb 100644
--- a/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenParser.java
+++ b/src/main/java/org/zwobble/mammoth/internal/styles/parsing/TokenParser.java
@@ -16,7 +16,11 @@ public class TokenParser {
}
public static String parseString(TokenIterator<TokenType> tokens) {
- String value = tokens.nextValue(TokenType.STRING);
+ return parseStringToken(tokens.next(TokenType.STRING));
+ }
+
+ static String parseStringToken(Token<TokenType> token) {
+ String value = token.getValue();
return EscapeSequences.decode(value.substring(1, value.length() - 1));
}
}