diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-11-24 21:38:10 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-11-24 21:38:10 +0000 |
| commit | 1de9198f0c69152fe6f474185ac351e9500a4ce8 (patch) | |
| tree | fa3eb932fa35f796548304a7454fb2eb83717d0e /mammoth/styles/parser/token_parser.py | |
| parent | 056a2173eeb6d0469fde9a24e1db81d67f8722f5 (diff) | |
Implement document matcher parser
Diffstat (limited to 'mammoth/styles/parser/token_parser.py')
| -rw-r--r-- | mammoth/styles/parser/token_parser.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/mammoth/styles/parser/token_parser.py b/mammoth/styles/parser/token_parser.py new file mode 100644 index 0000000..495d790 --- /dev/null +++ b/mammoth/styles/parser/token_parser.py @@ -0,0 +1,37 @@ +import re + +from .tokeniser import TokenType + + +def try_parse_class_name(tokens): + if tokens.try_skip(TokenType.SYMBOL, "."): + return parse_identifier(tokens) + else: + return None + + +def parse_identifier(tokens): + return decode_escape_sequences(tokens.next_value(TokenType.IDENTIFIER)) + + +def parse_string(tokens): + return decode_escape_sequences(tokens.next_value(TokenType.STRING)[1:-1]) + + +_ESCAPE_SEQUENCE_REGEX = re.compile(r"\\(.)") + + +def decode_escape_sequences(value): + return _ESCAPE_SEQUENCE_REGEX.sub(_decode_escape_sequence, value) + + +def _decode_escape_sequence(match): + code = match.group(1) + if code == "n": + return "\n" + elif code == "r": + return "\r" + elif code == "t": + return "\t" + else: + return code |
