diff options
| -rw-r--r-- | mammoth/docx/body_xml.py | 17 | ||||
| -rw-r--r-- | tests/docx/body_xml_tests.py | 13 |
2 files changed, 15 insertions, 15 deletions
diff --git a/mammoth/docx/body_xml.py b/mammoth/docx/body_xml.py index 6c2c501..e8315ac 100644 --- a/mammoth/docx/body_xml.py +++ b/mammoth/docx/body_xml.py @@ -18,7 +18,7 @@ def reader(numbering=None, if styles is None: styles = Styles({}, {}) - read, read_all = _create_reader( + read_all = _create_reader( numbering=numbering, content_types=content_types, relationships=relationships, @@ -26,23 +26,14 @@ def reader(numbering=None, docx_file=docx_file, files=files, ) - return _BodyReader(read, read_all) + return _BodyReader(read_all) class _BodyReader(object): - def __init__(self, read, read_all): - self._read = read + def __init__(self, read_all): self._read_all = read_all - def read(self, element): - result = self._read(element) - if result.elements: - element = result.elements[0] - else: - element = None - return results.Result(element, result.messages) - def read_all(self, elements): result = self._read_all(elements) return results.Result(result.elements, result.messages) @@ -407,7 +398,7 @@ def _create_reader(numbering, content_types, relationships, styles, docx_file, f elements = filter(lambda node: isinstance(node, XmlElement), nodes) return _ReadResult.concat(lists.map(read, elements)) - return read, _read_xml_elements + return _read_xml_elements def _inner_text(node): diff --git a/tests/docx/body_xml_tests.py b/tests/docx/body_xml_tests.py index 02d8b85..0d08242 100644 --- a/tests/docx/body_xml_tests.py +++ b/tests/docx/body_xml_tests.py @@ -733,7 +733,7 @@ class ReadXmlElementTests(object): def _read_and_get_document_xml_element(*args, **kwargs): return _read_and_get_document_xml( - lambda reader, element: reader.read(element), + lambda reader, element: reader.read_all([element]).map(single), *args, **kwargs) @@ -754,7 +754,7 @@ def _read_and_get_document_xml(func, *args, **kwargs): def _read_document_xml_element(*args, **kwargs): return _read_document_xml( - lambda reader, element: reader.read(element), + lambda reader, element: reader.read_all([element]).map(single), *args, **kwargs) @@ -853,3 +853,12 @@ def w_gridspan(val): def w_vmerge(val): return xml_element("w:vMerge", {"w:val": val}) + + +def single(values): + if len(values) == 0: + return None + elif len(values) == 1: + return values[0] + else: + raise Exception("Had {0} elements".format(len(values))) |
