aboutsummaryrefslogtreecommitdiff
path: root/mammoth/styles/parser
diff options
context:
space:
mode:
authorBruno Herfst <hello@brunoherfst.com>2016-10-26 11:04:09 +1100
committerMichael Williamson <mike@zwobble.org>2016-12-10 23:07:48 +0000
commitbc8c341b37bfac34bbeaccdd5368c2d7edc309ac (patch)
tree5c18d634763f5f6ae0defeb07368f0ae28d8ef4d /mammoth/styles/parser
parent8661cad2a82b66254fff564f4a514cbd67ad371d (diff)
Add support for page and column breaks
Diffstat (limited to 'mammoth/styles/parser')
-rw-r--r--mammoth/styles/parser/document_matcher_parser.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/mammoth/styles/parser/document_matcher_parser.py b/mammoth/styles/parser/document_matcher_parser.py
index 7f117b7..36999d0 100644
--- a/mammoth/styles/parser/document_matcher_parser.py
+++ b/mammoth/styles/parser/document_matcher_parser.py
@@ -40,6 +40,9 @@ def parse_document_matcher(tokens):
elif tokens.try_skip(TokenType.IDENTIFIER, "comment-reference"):
return document_matchers.comment_reference
+ elif tokens.try_skip(TokenType.IDENTIFIER, "br"):
+ return _parse_break(tokens)
+
else:
raise LineParseError("Unrecognised document element: {0}".format(tokens.next_value(TokenType.IDENTIFIER)))
@@ -78,3 +81,20 @@ def _parse_list_type(tokens):
return False
else:
raise LineParseError("Unrecognised list type: {0}".format(list_type))
+
+
+def _parse_break(tokens):
+ tokens.skip(TokenType.SYMBOL, "[")
+ tokens.skip(TokenType.IDENTIFIER, "type")
+ tokens.skip(TokenType.SYMBOL, "=")
+ type_name = parse_string(tokens)
+ tokens.skip(TokenType.SYMBOL, "]");
+
+ if type_name == "line":
+ return document_matchers.line_break
+ elif type_name == "page":
+ return document_matchers.page_break
+ elif type_name == "column":
+ return document_matchers.column_break
+ else:
+ raise LineParseError("Unrecognised break type: {0}".format(type_name))