aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mammoth/writers/markdown.py12
-rw-r--r--tests/writers/markdown_tests.py10
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()