From d745ac4b6d65e6729b3d70ddaa23a95bb59fbd39 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 12 Dec 2013 21:57:49 +0000 Subject: Support choice of element --- mammoth/html_paths.py | 6 +++--- mammoth/style_reader.py | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) (limited to 'mammoth') diff --git a/mammoth/html_paths.py b/mammoth/html_paths.py index bc4eba1..cb53968 100644 --- a/mammoth/html_paths.py +++ b/mammoth/html_paths.py @@ -5,9 +5,9 @@ def path(elements): return HtmlPath(elements) -def element(name): - return HtmlPathElement(name) +def element(names): + return HtmlPathElement(names) HtmlPath = collections.namedtuple("HtmlPath", ["elements"]) -HtmlPathElement = collections.namedtuple("HtmlPathElement", ["name"]) +HtmlPathElement = collections.namedtuple("HtmlPathElement", ["names"]) diff --git a/mammoth/style_reader.py b/mammoth/style_reader.py index 18c848d..0c27bd8 100644 --- a/mammoth/style_reader.py +++ b/mammoth/style_reader.py @@ -1,5 +1,22 @@ +from parsimonious.grammar import Grammar + from . import html_paths def read_html_path(string): - return html_paths.path([html_paths.element(string)]) + root_node = _grammar.parse(string) + tag_names = [root_node.children[0].text] + + for choice_node in root_node.children[1].children: + tag_names.append(choice_node.children[1].text) + + return html_paths.path([html_paths.element(tag_names)]) + + +_grammar = Grammar(""" + +tag_names = identifier ("|" identifier)* + +identifier = ~"[A-Z0-9]*"i + +""") -- cgit v1.2.3