aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mammoth/writers/markdown.py6
-rw-r--r--tests/writers/markdown_tests.py8
2 files changed, 14 insertions, 0 deletions
diff --git a/mammoth/writers/markdown.py b/mammoth/writers/markdown.py
index 771874c..07b5fc1 100644
--- a/mammoth/writers/markdown.py
+++ b/mammoth/writers/markdown.py
@@ -58,6 +58,7 @@ class MarkdownWriter(object):
start, end = _writers.get(name, _default_writer)(attributes)
self._fragments.append(start)
+ self._write_anchor(attributes)
self._element_stack.append(end)
def end(self, name):
@@ -73,6 +74,11 @@ class MarkdownWriter(object):
def as_string(self):
return "".join(self._fragments)
+
+ def _write_anchor(self, attributes):
+ html_id = attributes.get("id")
+ if html_id:
+ self._fragments.append('<a id="{0}"></a>'.format(html_id))
def _escape_markdown(value):
diff --git a/tests/writers/markdown_tests.py b/tests/writers/markdown_tests.py
index 9448b50..79ddb6d 100644
--- a/tests/writers/markdown_tests.py
+++ b/tests/writers/markdown_tests.py
@@ -94,6 +94,14 @@ def anchor_tags_without_href_attribute_are_treated_as_ordinary_text():
assert_equal("Hello", writer.as_string())
+@istest
+def elements_with_ids_have_anchor_tags_with_ids_appended_to_start_of_markdown_element():
+ writer = _create_writer()
+ writer.start("h1", {"id": "start"})
+ writer.text("Hello")
+ writer.end("h1")
+ assert_equal('# <a id="start"></a>Hello\n\n', writer.as_string())
+
def _create_writer():
return MarkdownWriter()