From dae26433ca6f7211b2eca03d2079c86c2e2dcfc7 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 12 Dec 2013 22:37:04 +0000 Subject: Read document paragraphs with style names --- mammoth/document_matchers.py | 6 +++--- mammoth/style_reader/document_matcher_reader.py | 16 ++++++++++++++-- tests/style_reader_tests.py | 8 ++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/mammoth/document_matchers.py b/mammoth/document_matchers.py index 5f1af2e..8bae5b1 100644 --- a/mammoth/document_matchers.py +++ b/mammoth/document_matchers.py @@ -1,8 +1,8 @@ import collections -def paragraph(): - return ParagraphMatcher() +def paragraph(style_name=None): + return ParagraphMatcher(style_name) -ParagraphMatcher = collections.namedtuple("ParagraphMatcher", []) +ParagraphMatcher = collections.namedtuple("ParagraphMatcher", ["style_name"]) diff --git a/mammoth/style_reader/document_matcher_reader.py b/mammoth/style_reader/document_matcher_reader.py index 583613a..f72f03d 100644 --- a/mammoth/style_reader/document_matcher_reader.py +++ b/mammoth/style_reader/document_matcher_reader.py @@ -10,10 +10,22 @@ def read_document_matcher(string): def _read_paragraph_node(paragraph_node): - return document_matchers.paragraph() + style_name = _read_style_node(paragraph_node.children[1]) + return document_matchers.paragraph(style_name=style_name) + + +def _read_style_node(style_node): + if style_node.children: + return style_node.children[0].children[1].text + else: + return None _grammar = Grammar(r""" -paragraph = "p" +paragraph = "p" style_name? + +style_name = "." style_identifier + +style_identifier = ~"[A-Z0-9]*"i """) diff --git a/tests/style_reader_tests.py b/tests/style_reader_tests.py index 433b8b3..c04c44b 100644 --- a/tests/style_reader_tests.py +++ b/tests/style_reader_tests.py @@ -69,3 +69,11 @@ class ReadDocumentMatcherTests(object): document_matchers.paragraph(), read_document_matcher("p") ) + + + @istest + def reads_paragraph_with_style_name(self): + assert_equal( + document_matchers.paragraph(style_name="Heading1"), + read_document_matcher("p.Heading1") + ) -- cgit v1.2.3