From 14ca5c4d6993806b568ba5a9befb81326d9ed806 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 14 Dec 2013 15:08:26 +0000 Subject: Add attributes to start tags --- mammoth/html_generation.py | 10 ++++++---- tests/html_generation_tests.py | 9 +++++++++ 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('
', 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('

Hello!

', generator.html_string()) -- cgit v1.2.3