aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2013-12-14 15:15:05 +0000
committerMichael Williamson <mike@zwobble.org>2013-12-14 15:15:05 +0000
commit841de73928538038496f15467aba9001b47a2d9c (patch)
treee49be2abcffebe693e74ab3f8157414b978a8ea8
parent14ca5c4d6993806b568ba5a9befb81326d9ed806 (diff)
Add appending of other HTML generators
-rw-r--r--mammoth/html_generation.py6
-rw-r--r--tests/html_generation_tests.py18
2 files changed, 24 insertions, 0 deletions
diff --git a/mammoth/html_generation.py b/mammoth/html_generation.py
index c2d0240..e276bdc 100644
--- a/mammoth/html_generation.py
+++ b/mammoth/html_generation.py
@@ -37,6 +37,12 @@ class HtmlGenerator(object):
attribute_string = _generate_attribute_string(element.attributes)
self._fragments.append("<{0}{1}>".format(element.name, attribute_string))
+ def append(self, other):
+ if other._fragments:
+ self._write_all()
+ for fragment in other._fragments:
+ self._fragments.append(fragment)
+
def html_string(self):
return "".join(self._fragments)
diff --git a/tests/html_generation_tests.py b/tests/html_generation_tests.py
index fac6f05..f32b713 100644
--- a/tests/html_generation_tests.py
+++ b/tests/html_generation_tests.py
@@ -73,3 +73,21 @@ def opening_tag_can_have_attributes():
generator.text("Hello!")
generator.end()
assert_equal('<p data-blah="42">Hello!</p>', generator.html_string())
+
+
+@istest
+def appending_another_html_generator_does_nothing_if_empty():
+ generator = HtmlGenerator()
+ generator.start("p")
+ generator.append(HtmlGenerator())
+ assert_equal('', generator.html_string())
+
+
+@istest
+def appending_another_html_generator_writes_out_elements_if_other_generator_is_not_empty():
+ generator = HtmlGenerator()
+ generator.start("p")
+ other = HtmlGenerator()
+ other.text("Hello!")
+ generator.append(other)
+ assert_equal('<p>Hello!', generator.html_string())