aboutsummaryrefslogtreecommitdiff
path: root/mammoth
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-02-07 18:55:24 +0000
committerMichael Williamson <mike@zwobble.org>2015-02-07 18:55:24 +0000
commit57eddaefd1961884cddbaf427459822ad8811aeb (patch)
tree1693604dfbd460f861227915b9734a4b9ebeb3eb /mammoth
parente0b022e52d720758023bb0248ea0a17a4cbbb822 (diff)
Add scaffolding for markdown
Diffstat (limited to 'mammoth')
-rw-r--r--mammoth/__init__.py12
-rw-r--r--mammoth/conversion.py5
-rw-r--r--mammoth/writers/__init__.py18
-rw-r--r--mammoth/writers/markdown.py25
4 files changed, 54 insertions, 6 deletions
diff --git a/mammoth/__init__.py b/mammoth/__init__.py
index c7b305d..8ec2400 100644
--- a/mammoth/__init__.py
+++ b/mammoth/__init__.py
@@ -3,7 +3,15 @@ from . import docx, conversion, options, documents, images, underline
__all__ = ["convert_to_html", "extract_raw_text", "images", "underline"]
-def convert_to_html(fileobj, transform_document=None, id_prefix=None, **kwargs):
+def convert_to_html(*args, **kwargs):
+ return convert(*args, output_format="html", **kwargs)
+
+
+def convert_to_markdown(*args, **kwargs):
+ return convert(*args, output_format="markdown", **kwargs)
+
+
+def convert(fileobj, transform_document=None, id_prefix=None, **kwargs):
if transform_document is None:
transform_document = lambda x: x
return docx.read(fileobj).map(transform_document).bind(lambda document:
@@ -13,7 +21,7 @@ def convert_to_html(fileobj, transform_document=None, id_prefix=None, **kwargs):
**options.read_options(kwargs)
)
)
-
+
def extract_raw_text(fileobj):
return docx.read(fileobj).map(_extract_raw_text_from_element)
diff --git a/mammoth/conversion.py b/mammoth/conversion.py
index 3c217e0..2932351 100644
--- a/mammoth/conversion.py
+++ b/mammoth/conversion.py
@@ -13,7 +13,8 @@ def convert_document_element_to_html(element,
style_map=None,
convert_image=None,
convert_underline=None,
- id_prefix=None):
+ id_prefix=None,
+ output_format=None):
if style_map is None:
style_map = []
@@ -21,7 +22,7 @@ def convert_document_element_to_html(element,
if id_prefix is None:
id_prefix = str(random.randint(0, 1000000000000000))
- html_generator = HtmlGenerator(writers.writer)
+ html_generator = HtmlGenerator(lambda: writers.writer(output_format))
converter = DocumentConverter(style_map,
convert_image=convert_image,
convert_underline=convert_underline,
diff --git a/mammoth/writers/__init__.py b/mammoth/writers/__init__.py
index 04a64d7..376b322 100644
--- a/mammoth/writers/__init__.py
+++ b/mammoth/writers/__init__.py
@@ -1,5 +1,19 @@
from .html import HtmlWriter
+from .markdown import MarkdownWriter
-def writer():
- return HtmlWriter()
+def writer(output_format=None):
+ if output_format is None:
+ output_format = "html"
+
+ return _writers[output_format]()
+
+
+def formats():
+ return _writers.keys()
+
+
+_writers = {
+ "html": HtmlWriter,
+ "markdown": MarkdownWriter,
+}
diff --git a/mammoth/writers/markdown.py b/mammoth/writers/markdown.py
new file mode 100644
index 0000000..c4e1158
--- /dev/null
+++ b/mammoth/writers/markdown.py
@@ -0,0 +1,25 @@
+from __future__ import unicode_literals
+
+
+class MarkdownWriter(object):
+ def __init__(self):
+ self._fragments = []
+
+ def text(self, text):
+ self._fragments.append(text)
+
+ def start(self, name, attributes=None):
+ pass
+
+ def end(self, name):
+ if name == "p":
+ self._fragments.append("\n\n")
+
+ def self_closing(self, name, attributes=None):
+ pass
+
+ def append(self, other):
+ self._fragments.append(other)
+
+ def as_string(self):
+ return "".join(self._fragments)