aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mammoth/html_generation.py10
-rw-r--r--tests/html_generation_tests.py9
2 files changed, 15 insertions, 4 deletions
diff --git a/mammoth/html_generation.py b/mammoth/html_generation.py
index 52f9f92..c2d0240 100644
--- a/mammoth/html_generation.py
+++ b/mammoth/html_generation.py
@@ -11,8 +11,8 @@ class HtmlGenerator(object):
self._write_all()
self._fragments.append(_escape_html(text))
- def start(self, name):
- self._stack.append(_Element(name))
+ def start(self, name, attributes=None):
+ self._stack.append(_Element(name, attributes))
def end(self):
element = self._stack.pop()
@@ -34,15 +34,17 @@ class HtmlGenerator(object):
self._write_element(element)
def _write_element(self, element):
- self._fragments.append("<{0}>".format(element.name))
+ attribute_string = _generate_attribute_string(element.attributes)
+ self._fragments.append("<{0}{1}>".format(element.name, attribute_string))
def html_string(self):
return "".join(self._fragments)
class _Element(object):
- def __init__(self, name):
+ def __init__(self, name, attributes):
self.name = name
+ self.attributes = attributes
self.written = False
diff --git a/tests/html_generation_tests.py b/tests/html_generation_tests.py
index 9d1dc9a..fac6f05 100644
--- a/tests/html_generation_tests.py
+++ b/tests/html_generation_tests.py
@@ -64,3 +64,12 @@ def attribute_values_are_escaped():
generator = HtmlGenerator()
generator.self_closing("br", {"data-blah": "<"})
assert_equal('<br data-blah="&lt;" />', generator.html_string())
+
+
+@istest
+def opening_tag_can_have_attributes():
+ generator = HtmlGenerator()
+ generator.start("p", {"data-blah": "42"})
+ generator.text("Hello!")
+ generator.end()
+ assert_equal('<p data-blah="42">Hello!</p>', generator.html_string())