aboutsummaryrefslogtreecommitdiff
path: root/mammoth/styles/parser
diff options
context:
space:
mode:
Diffstat (limited to 'mammoth/styles/parser')
-rw-r--r--mammoth/styles/parser/style_mapping_parser.py15
-rw-r--r--mammoth/styles/parser/token_iterator.py4
-rw-r--r--mammoth/styles/parser/tokeniser.py3
3 files changed, 19 insertions, 3 deletions
diff --git a/mammoth/styles/parser/style_mapping_parser.py b/mammoth/styles/parser/style_mapping_parser.py
new file mode 100644
index 0000000..8c84496
--- /dev/null
+++ b/mammoth/styles/parser/style_mapping_parser.py
@@ -0,0 +1,15 @@
+from .tokeniser import TokenType
+from .document_matcher_parser import parse_document_matcher
+from .html_path_parser import parse_html_path
+from ...styles import Style
+
+
+def parse_style_mapping(tokens):
+ document_matcher = parse_document_matcher(tokens)
+ tokens.skip(TokenType.WHITESPACE)
+ tokens.skip(TokenType.SYMBOL, "=>")
+ tokens.try_skip(TokenType.WHITESPACE)
+ html_path = parse_html_path(tokens)
+ tokens.skip(TokenType.END)
+
+ return Style(document_matcher, html_path)
diff --git a/mammoth/styles/parser/token_iterator.py b/mammoth/styles/parser/token_iterator.py
index c6876e9..114ce28 100644
--- a/mammoth/styles/parser/token_iterator.py
+++ b/mammoth/styles/parser/token_iterator.py
@@ -27,9 +27,9 @@ class TokenIterator(object):
else:
raise self._unexpected_token_type(token_type, token)
- def try_skip(self, token_type, token_value):
+ def try_skip(self, token_type, token_value=None):
token = self._tokens[self._index]
- if token.type == token_type and token.value == token_value:
+ if token.type == token_type and (token_value is None or token.value == token_value):
self._index += 1
return True
else:
diff --git a/mammoth/styles/parser/tokeniser.py b/mammoth/styles/parser/tokeniser.py
index c9eb4cf..7366cfe 100644
--- a/mammoth/styles/parser/tokeniser.py
+++ b/mammoth/styles/parser/tokeniser.py
@@ -12,6 +12,7 @@ class TokenType(object):
STRING = "string"
UNTERMINATED_STRING = "unterminated string"
INTEGER = "integer"
+ END = "end"
@@ -33,7 +34,7 @@ def regex_tokeniser(rules):
# Should be impossible
raise Exception("Remaining: " + value[index:])
- tokens.append(Token(index, "end", ""))
+ tokens.append(Token(index, TokenType.END, ""))
return tokens