aboutsummaryrefslogtreecommitdiff
path: root/mammoth
diff options
context:
space:
mode:
Diffstat (limited to 'mammoth')
-rw-r--r--mammoth/__init__.py43
-rw-r--r--mammoth/documents.py7
-rw-r--r--mammoth/results.py4
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