diff options
Diffstat (limited to 'mammoth')
| -rw-r--r-- | mammoth/__init__.py | 43 | ||||
| -rw-r--r-- | mammoth/documents.py | 7 | ||||
| -rw-r--r-- | mammoth/results.py | 4 |
3 files changed, 53 insertions, 1 deletions
diff --git a/mammoth/__init__.py b/mammoth/__init__.py index 803273f..195e818 100644 --- a/mammoth/__init__.py +++ b/mammoth/__init__.py @@ -1,5 +1,46 @@ from .results import Result +from . import docx, documents def convert_to_html(fileobj): - return Result("", []) + document = docx.read(fileobj).value + html = _convert_element_to_html(document) + return Result(html, []) + + +def _convert_element_to_html(element): + return _converters[type(element)](element) + + +_converters = {} + + +def converter(element_type): + def add(func): + _converters[element_type] = func + + return add + + +@converter(documents.Document) +def convert_document(document): + return _convert_elements_to_html(document.children) + + +@converter(documents.Paragraph) +def convert_paragraph(paragraph): + return "<p>{0}</p>".format(_convert_elements_to_html(paragraph.children)) + + +@converter(documents.Run) +def convert_run(run): + return _convert_elements_to_html(run.children) + + +@converter(documents.Text) +def convert_text(text): + return text.value + + +def _convert_elements_to_html(elements): + return "".join(map(_convert_element_to_html, elements)) diff --git a/mammoth/documents.py b/mammoth/documents.py new file mode 100644 index 0000000..50b5e65 --- /dev/null +++ b/mammoth/documents.py @@ -0,0 +1,7 @@ +import collections + + +Document = collections.namedtuple("Document", ["children"]) +Paragraph = collections.namedtuple("Paragraph", ["children"]) +Run = collections.namedtuple("Run", ["children"]) +Text = collections.namedtuple("Text", ["value"]) diff --git a/mammoth/results.py b/mammoth/results.py new file mode 100644 index 0000000..f735df7 --- /dev/null +++ b/mammoth/results.py @@ -0,0 +1,4 @@ +class Result(object): + def __init__(self, value, messages): + self.value = value + self.messages = messages |
