diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-02-07 18:55:24 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-02-07 18:55:24 +0000 |
| commit | 57eddaefd1961884cddbaf427459822ad8811aeb (patch) | |
| tree | 1693604dfbd460f861227915b9734a4b9ebeb3eb /mammoth | |
| parent | e0b022e52d720758023bb0248ea0a17a4cbbb822 (diff) | |
Add scaffolding for markdown
Diffstat (limited to 'mammoth')
| -rw-r--r-- | mammoth/__init__.py | 12 | ||||
| -rw-r--r-- | mammoth/conversion.py | 5 | ||||
| -rw-r--r-- | mammoth/writers/__init__.py | 18 | ||||
| -rw-r--r-- | mammoth/writers/markdown.py | 25 |
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) |
