diff options
Diffstat (limited to 'mammoth')
| -rw-r--r-- | mammoth/conversion.py | 16 | ||||
| -rw-r--r-- | mammoth/documents.py | 5 | ||||
| -rw-r--r-- | mammoth/docx/numbering_xml.py | 4 | ||||
| -rw-r--r-- | mammoth/style_reader/document_matcher_reader.py | 2 |
4 files changed, 20 insertions, 7 deletions
diff --git a/mammoth/conversion.py b/mammoth/conversion.py index 3f30b22..87e1bf9 100644 --- a/mammoth/conversion.py +++ b/mammoth/conversion.py @@ -103,9 +103,7 @@ class DocumentConverter(object): def _find_html_path(self, element, element_type, default): for style in self._styles: document_matcher = style.document_matcher - if document_matcher.element_type == element_type and ( - document_matcher.style_name is None or - document_matcher.style_name == element.style_name): + if _document_matcher_matches(document_matcher, element, element_type): return style.html_path if element.style_name is not None: @@ -113,3 +111,15 @@ class DocumentConverter(object): return default + +def _document_matcher_matches(matcher, element, element_type): + return ( + matcher.element_type == element_type and ( + matcher.style_name is None or + matcher.style_name == element.style_name + ) and ( + element_type != "paragraph" or + matcher.numbering is None or + matcher.numbering == element.numbering + ) + ) diff --git a/mammoth/documents.py b/mammoth/documents.py index ba03e92..0f2d767 100644 --- a/mammoth/documents.py +++ b/mammoth/documents.py @@ -37,4 +37,7 @@ image = Image hyperlink = Hyperlink -NumberingLevel = collections.namedtuple("NumberingLevel", ["level_index", "is_ordered"]) +def numbering_level(level_index, is_ordered): + return _NumberingLevel(str(level_index), bool(is_ordered)) + +_NumberingLevel = collections.namedtuple("NumberingLevel", ["level_index", "is_ordered"]) diff --git a/mammoth/docx/numbering_xml.py b/mammoth/docx/numbering_xml.py index 115d812..ebac1c8 100644 --- a/mammoth/docx/numbering_xml.py +++ b/mammoth/docx/numbering_xml.py @@ -1,4 +1,4 @@ -from ..documents import NumberingLevel +from ..documents import numbering_level def read_numbering_xml_element(element): @@ -30,7 +30,7 @@ def _read_abstract_num_level(element): level_index = element.attributes["w:ilvl"] num_fmt = element.find_child_or_null("w:numFmt").attributes.get("w:val") is_ordered = num_fmt != "bullet" - return NumberingLevel(level_index, is_ordered) + return numbering_level(level_index, is_ordered) def _read_nums(element, abstract_nums): diff --git a/mammoth/style_reader/document_matcher_reader.py b/mammoth/style_reader/document_matcher_reader.py index fba6092..4bc7247 100644 --- a/mammoth/style_reader/document_matcher_reader.py +++ b/mammoth/style_reader/document_matcher_reader.py @@ -36,7 +36,7 @@ def _read_style_node(style_node): def _read_list_node(list_node): if list_node.children: - return documents.NumberingLevel( + return documents.numbering_level( int(list_node.children[0].children[3].text), is_ordered=list_node.children[0].children[1].text == "ordered-list", ) |
