diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-02-08 20:20:33 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-02-08 20:20:33 +0000 |
| commit | 1236e907e724926dedfac0695b1eedbe0acf226f (patch) | |
| tree | 752bbedcffa05da7cdbe19b504c6ddb1de15b622 | |
| parent | 43c6b4c065d6581b93ae0e8a6dec673e6e029840 (diff) | |
Handle a tags in markdown writer
| -rw-r--r-- | mammoth/writers/markdown.py | 12 | ||||
| -rw-r--r-- | tests/writers/markdown_tests.py | 10 |
2 files changed, 19 insertions, 3 deletions
diff --git a/mammoth/writers/markdown.py b/mammoth/writers/markdown.py index 8830277..66bc9f2 100644 --- a/mammoth/writers/markdown.py +++ b/mammoth/writers/markdown.py @@ -12,16 +12,22 @@ class _Wrapped(object): self._start = start self._end = end - def __call__(self): + def __call__(self, attributes): return self._start, self._end +def _hyperlink(attributes): + href = attributes.get("href", "") + return "[", "]({0})".format(href) + + def _init_writers(): writers = { "p": _Wrapped("", "\n\n"), "br": _Wrapped("", " \n"), "strong": _symmetric_wrapped("__"), "em": _symmetric_wrapped("*"), + "a": _hyperlink, } for level in range(1, 7): @@ -31,7 +37,7 @@ def _init_writers(): _writers = _init_writers() -_default_writer = lambda: ("", "") +_default_writer = lambda attributes: ("", "") class MarkdownWriter(object): @@ -43,7 +49,7 @@ class MarkdownWriter(object): self._fragments.append(_escape_markdown(text)) def start(self, name, attributes=None): - start, end = _writers.get(name, _default_writer)() + start, end = _writers.get(name, _default_writer)(attributes) self._fragments.append(start) self._element_stack.append(end) diff --git a/tests/writers/markdown_tests.py b/tests/writers/markdown_tests.py index ac86d2d..bfa1e1b 100644 --- a/tests/writers/markdown_tests.py +++ b/tests/writers/markdown_tests.py @@ -76,5 +76,15 @@ def emphasised_text_is_surrounded_by_one_asterix(): assert_equal("Hello *World*", writer.as_string()) +@istest +def anchor_tags_are_written_as_hyperlinks(): + writer = _create_writer() + writer.start("a", {"href": "http://example.com"}); + writer.text("Hello"); + writer.end("a"); + assert_equal("[Hello](http://example.com)", writer.as_string()) + + + def _create_writer(): return MarkdownWriter() |
