aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mammoth/html_generation.py15
-rw-r--r--tests/html_generation_tests.py6
2 files changed, 19 insertions, 2 deletions
diff --git a/mammoth/html_generation.py b/mammoth/html_generation.py
index 22db85e..37d191a 100644
--- a/mammoth/html_generation.py
+++ b/mammoth/html_generation.py
@@ -23,8 +23,9 @@ class HtmlGenerator(object):
while self._stack:
self.end()
- def self_closing(self, name):
- self._fragments.append("<{0} />".format(name))
+ def self_closing(self, name, attributes=None):
+ attribute_string = _generate_attribute_string(attributes)
+ self._fragments.append("<{0}{1} />".format(name, attribute_string))
def _write_all(self):
for element in self._stack:
@@ -47,3 +48,13 @@ class _Element(object):
def _escape_html(text):
return cgi.escape(text, quote=True)
+
+
+def _generate_attribute_string(attributes):
+ if attributes is None:
+ return ""
+ else:
+ return "".join(
+ ' {0}="{1}"'.format(key, value)
+ for key, value in attributes.iteritems()
+ )
diff --git a/tests/html_generation_tests.py b/tests/html_generation_tests.py
index 5978dfe..c637798 100644
--- a/tests/html_generation_tests.py
+++ b/tests/html_generation_tests.py
@@ -51,3 +51,9 @@ def elements_with_empty_string_text_are_not_generator():
generator.end_all()
assert_equal("", generator.html_string())
+
+@istest
+def self_closing_tag_can_have_attributes():
+ generator = HtmlGenerator()
+ generator.self_closing("br", {"data-blah": "42"})
+ assert_equal('<br data-blah="42" />', generator.html_string())