diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-12-01 13:43:43 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-12-01 13:43:43 +0000 |
| commit | b160de0cdd0ec662a64718ab796a51cd12924e13 (patch) | |
| tree | 69e91bfa21bb8ad01b55ccd4849d8b983f5cabd8 | |
| parent | 24c6649d0946f2d7bb8157b75caec42b60a2f1e7 (diff) | |
Return result from read_document_xml_element
| -rw-r--r-- | mammoth/docx/__init__.py | 2 | ||||
| -rw-r--r-- | mammoth/docx/document_xml.py | 3 | ||||
| -rw-r--r-- | tests/docx/document_xml_tests.py | 35 |
3 files changed, 25 insertions, 15 deletions
diff --git a/mammoth/docx/__init__.py b/mammoth/docx/__init__.py index 6e1013b..bb26826 100644 --- a/mammoth/docx/__init__.py +++ b/mammoth/docx/__init__.py @@ -14,5 +14,5 @@ def read(fileobj): zip_file = zipfile.ZipFile(fileobj) document_fileobj = zip_file.open("word/document.xml") document_xml = parse_xml(document_fileobj, _namespaces) - return Result(read_document_xml_element(document_xml), []) + return read_document_xml_element(document_xml) diff --git a/mammoth/docx/document_xml.py b/mammoth/docx/document_xml.py index 59f9920..dd018de 100644 --- a/mammoth/docx/document_xml.py +++ b/mammoth/docx/document_xml.py @@ -1,10 +1,11 @@ from .. import documents +from .. import results from .xmlparser import node_types def read_document_xml_element(element, numbering=None): reader = _create_reader(numbering) - return reader(element) + return results.Result(reader(element), []) def _create_reader(numbering): _handlers = {} diff --git a/tests/docx/document_xml_tests.py b/tests/docx/document_xml_tests.py index 5f64e2b..232bb34 100644 --- a/tests/docx/document_xml_tests.py +++ b/tests/docx/document_xml_tests.py @@ -11,14 +11,14 @@ class ReadXmlElementTests(object): @istest def text_from_text_element_is_read(self): element = _text_element("Hello!") - assert_equal(documents.Text("Hello!"), read_document_xml_element(element)) + assert_equal(documents.Text("Hello!"), _read_and_get_document_xml_element(element)) @istest def can_read_text_within_run(self): element = _run_element_with_text("Hello!") assert_equal( documents.run([documents.Text("Hello!")]), - read_document_xml_element(element) + _read_and_get_document_xml_element(element) ) @istest @@ -26,7 +26,7 @@ class ReadXmlElementTests(object): element = _paragraph_element_with_text("Hello!") assert_equal( documents.paragraph([documents.run([documents.Text("Hello!")])]), - read_document_xml_element(element) + _read_and_get_document_xml_element(element) ) @istest @@ -34,26 +34,26 @@ class ReadXmlElementTests(object): element = _document_element_with_text("Hello!") assert_equal( documents.Document([documents.paragraph([documents.run([documents.Text("Hello!")])])]), - read_document_xml_element(element) + _read_and_get_document_xml_element(element) ) @istest def paragraph_has_no_style_if_it_has_no_properties(self): element = xml_element("w:p") - assert_equal(None, read_document_xml_element(element).style_name) + assert_equal(None, _read_and_get_document_xml_element(element).style_name) @istest def paragraph_has_style_name_read_from_paragraph_properties_if_present(self): style_xml = xml_element("w:pStyle", {"w:val": "Heading1"}) properties_xml = xml_element("w:pPr", {}, [style_xml]) paragraph_xml = xml_element("w:p", {}, [properties_xml]) - paragraph = read_document_xml_element(paragraph_xml) + paragraph = _read_and_get_document_xml_element(paragraph_xml) assert_equal("Heading1", paragraph.style_name) @istest def paragraph_has_no_numbering_if_it_has_no_numbering_properties(self): element = xml_element("w:p") - assert_equal(None, read_document_xml_element(element).numbering) + assert_equal(None, _read_and_get_document_xml_element(element).numbering) @istest def paragraph_has_numbering_properties_from_paragraph_properties_if_present(self): @@ -65,7 +65,7 @@ class ReadXmlElementTests(object): paragraph_xml = xml_element("w:p", {}, [properties_xml]) numbering = Numbering({"42": {"1": NumberingLevel("1", True)}}) - paragraph = read_document_xml_element(paragraph_xml, numbering=numbering) + paragraph = _read_and_get_document_xml_element(paragraph_xml, numbering=numbering) assert_equal("1", paragraph.numbering.level_index) assert_equal(True, paragraph.numbering.is_ordered) @@ -73,7 +73,7 @@ class ReadXmlElementTests(object): @istest def run_has_no_style_if_it_has_no_properties(self): element = xml_element("w:r") - assert_equal(None, read_document_xml_element(element).style_name) + assert_equal(None, _read_and_get_document_xml_element(element).style_name) @istest def run_has_style_name_read_from_run_properties_if_present(self): @@ -104,28 +104,37 @@ class ReadXmlElementTests(object): def _read_run_with_properties(self, properties): properties_xml = xml_element("w:rPr", {}, properties) run_xml = xml_element("w:r", {}, [properties_xml]) - return read_document_xml_element(run_xml) + return _read_and_get_document_xml_element(run_xml) @istest def can_read_tab_element(self): element = xml_element("w:tab") - tab = read_document_xml_element(element) + tab = _read_and_get_document_xml_element(element) assert_equal(documents.tab(), tab) @istest + def ignored_elements_are_ignored_without_message(self): + element = xml_element("w:bookmarkStart") + result = read_document_xml_element(element) + assert_equal([], result.messages) + + @istest def unrecognised_elements_are_ignored(self): element = xml_element("w:huh", {}, []) - assert_equal(None, read_document_xml_element(element)) + assert_equal(None, _read_and_get_document_xml_element(element)) @istest def unrecognised_children_are_ignored(self): element = xml_element("w:r", {}, [_text_element("Hello!"), xml_element("w:huh", {}, [])]) assert_equal( documents.run([documents.Text("Hello!")]), - read_document_xml_element(element) + _read_and_get_document_xml_element(element) ) +def _read_and_get_document_xml_element(*args, **kwargs): + return read_document_xml_element(*args, **kwargs).value + def _document_element_with_text(text): return xml_element("w:document", {}, [ |
