summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-14 20:46:50 +0000
committerMichael Williamson <mike@zwobble.org>2016-03-14 20:46:50 +0000
commitf48207289a41b293fcb8d3f807d4cc8fb227bc9a (patch)
treef5d234ffc6f5ac5989f1a3e45d04f9d54de5ebcc
parent2c57c1014ae8e44e62021ea2cc36c54352389632 (diff)
Remove unused html_generation module
-rw-r--r--mammoth/html_generation.py104
-rw-r--r--tests/html_generation_tests.py199
2 files changed, 0 insertions, 303 deletions
diff --git a/mammoth/html_generation.py b/mammoth/html_generation.py
deleted file mode 100644
index e538f6e..0000000
--- a/mammoth/html_generation.py
+++ /dev/null
@@ -1,104 +0,0 @@
-from __future__ import unicode_literals
-
-
-class HtmlGenerator(object):
- def __init__(self, create_writer):
- self._stack = []
- self._create_writer = create_writer
- self._writer = create_writer()
-
- def text(self, text):
- if text:
- self.write_all()
- self._writer.text(text)
-
- def start(self, name, attributes=None, always_write=False):
- self._stack.append(_Element(name, attributes))
-
- if always_write:
- self.write_all()
-
- def end(self):
- element = self._stack.pop()
- if element.written:
- self._writer.end(element.name)
-
- def end_all(self):
- while self._stack:
- self.end()
-
- def self_closing(self, name, attributes=None):
- self._writer.self_closing(name, attributes)
-
- def write_all(self):
- for element in self._stack:
- if not element.written:
- element.written = True
- self._write_element(element)
-
- def _write_element(self, element):
- self._writer.start(element.name, element.attributes)
-
- def append(self, other):
- other_string = other.as_string()
- if other_string:
- self.write_all()
- self._writer.append(other_string)
-
- def as_string(self):
- return self._writer.as_string()
-
- def child(self):
- return HtmlGenerator(self._create_writer)
-
-
-class _Element(object):
- def __init__(self, name, attributes):
- if attributes is None:
- attributes = {}
-
- self.name = name
- self.attributes = attributes
- self.written = False
-
-
-def satisfy_html_path(generator, path):
- first_unsatisfied_index = _find_first_unsatisfied_index(generator, path)
- while len(generator._stack) > first_unsatisfied_index:
- generator.end()
-
- for element in path.elements[first_unsatisfied_index:]:
- _append_element(generator, element)
-
-
-def append_html_path(generator, path):
- for element in path.elements:
- _append_element(generator, element)
-
-
-def _append_element(generator, element):
- attributes = {}
- if element.class_names:
- attributes["class"] = _generate_class_attribute(element)
- generator.start(element.names[0], attributes=attributes)
-
-
-
-def _find_first_unsatisfied_index(generator, path):
- for index, (generated_element, path_element) in enumerate(zip(generator._stack, path.elements)):
- if not _is_element_match(generated_element, path_element):
- return index
-
- return len(generator._stack)
-
-
-def _is_element_match(generated_element, path_element):
- return (
- not path_element.fresh and
- generated_element.name in path_element.names and
- generated_element.attributes.get("class", "") == _generate_class_attribute(path_element)
- )
-
-
-def _generate_class_attribute(path_element):
- return " ".join(path_element.class_names)
diff --git a/tests/html_generation_tests.py b/tests/html_generation_tests.py
deleted file mode 100644
index 0608a30..0000000
--- a/tests/html_generation_tests.py
+++ /dev/null
@@ -1,199 +0,0 @@
-from nose.tools import istest, assert_equal
-
-from mammoth.html_generation import HtmlGenerator, satisfy_html_path, append_html_path
-from mammoth import html_paths
-from mammoth.writers import HtmlWriter
-
-
-@istest
-def generates_empty_string_when_newly_created():
- generator = _create_html_generator()
- assert_equal("", generator.as_string())
-
-
-@istest
-def html_escapes_text():
- generator = _create_html_generator()
- generator.text("<")
- assert_equal("&lt;", generator.as_string())
-
-
-@istest
-def self_closing_tag_is_self_closing():
- generator = _create_html_generator()
- generator.self_closing("br")
- assert_equal("<br />", generator.as_string())
-
-
-@istest
-def all_elements_are_closed_by_end_all():
- generator = _create_html_generator()
- generator.start("p")
- generator.start("span")
- generator.text("Hello!")
- generator.end_all()
- assert_equal("<p><span>Hello!</span></p>", generator.as_string())
-
-
-@istest
-def elements_with_no_text_are_not_generator():
- generator = _create_html_generator()
- generator.start("p")
- generator.start("span")
- generator.end_all()
- assert_equal("", generator.as_string())
-
-
-@istest
-def elements_with_empty_string_text_are_not_generator():
- generator = _create_html_generator()
- generator.start("p")
- generator.start("span")
- generator.text("")
- generator.end_all()
- assert_equal("", generator.as_string())
-
-
-@istest
-def self_closing_tag_can_have_attributes():
- generator = _create_html_generator()
- generator.self_closing("br", {"data-blah": "42"})
- assert_equal('<br data-blah="42" />', generator.as_string())
-
-
-@istest
-def attribute_values_are_escaped():
- generator = _create_html_generator()
- generator.self_closing("br", {"data-blah": "<"})
- assert_equal('<br data-blah="&lt;" />', generator.as_string())
-
-
-@istest
-def opening_tag_can_have_attributes():
- generator = _create_html_generator()
- generator.start("p", {"data-blah": "42"})
- generator.text("Hello!")
- generator.end()
- assert_equal('<p data-blah="42">Hello!</p>', generator.as_string())
-
-
-@istest
-def appending_another_html_generator_does_nothing_if_empty():
- generator = _create_html_generator()
- generator.start("p")
- generator.append(_create_html_generator())
- assert_equal('', generator.as_string())
-
-
-@istest
-def appending_another_html_generator_writes_out_elements_if_other_generator_is_not_empty():
- generator = _create_html_generator()
- generator.start("p")
- other = _create_html_generator()
- other.text("Hello!")
- generator.append(other)
- assert_equal('<p>Hello!', generator.as_string())
-
-
-@istest
-class SatisfyPathTests(object):
- @istest
- def plain_elements_are_generated_to_satisfy_plain_path_elements(self):
- generator = _create_html_generator()
- path = html_paths.path([html_paths.element(["p"])])
- satisfy_html_path(generator, path)
- generator.text("Hello!")
- assert_equal('<p>Hello!', generator.as_string())
-
-
- @istest
- def no_elements_are_generated_if_all_path_elements_are_already_satisfied(self):
- generator = _create_html_generator()
- generator.start("p")
- generator.text("Hello")
- path = html_paths.path([html_paths.element(["p"])])
- satisfy_html_path(generator, path)
- generator.text("there")
- assert_equal('<p>Hellothere', generator.as_string())
-
-
- @istest
- def only_missing_elements_are_generated_to_satisfy_plain_path_elements(self):
- generator = _create_html_generator()
- generator.start("blockquote")
- generator.text("Hello")
- path = html_paths.path([html_paths.element(["blockquote"]), html_paths.element(["p"])])
- satisfy_html_path(generator, path)
- generator.text("there")
- assert_equal('<blockquote>Hello<p>there', generator.as_string())
-
-
- @istest
- def mismatched_elements_are_closed_to_satisfy_plain_path_elements(self):
- generator = _create_html_generator()
- generator.start("blockquote")
- generator.start("span")
- generator.text("Hello")
- path = html_paths.path([html_paths.element(["blockquote"]), html_paths.element(["p"])])
- satisfy_html_path(generator, path)
- generator.text("there")
- assert_equal('<blockquote><span>Hello</span><p>there', generator.as_string())
-
-
- @istest
- def fresh_element_matches_nothing(self):
- generator = _create_html_generator()
- generator.start("blockquote")
- generator.start("p")
- generator.text("Hello")
- path = html_paths.path([html_paths.element(["blockquote"]), html_paths.element(["p"], fresh=True)])
- satisfy_html_path(generator, path)
- generator.text("there")
- assert_equal('<blockquote><p>Hello</p><p>there', generator.as_string())
-
-
- @istest
- def attributes_are_generated_when_satisfying_elements(self):
- generator = _create_html_generator()
- path = html_paths.path([html_paths.element(["p"], class_names=["tip"])])
- satisfy_html_path(generator, path)
- generator.text("Hello")
- assert_equal('<p class="tip">Hello', generator.as_string())
-
-
- @istest
- def elements_do_not_match_if_class_names_do_not_match(self):
- generator = _create_html_generator()
- generator.start("p", {"class": "help"})
- generator.text("Help")
- path = html_paths.path([html_paths.element(["p"], class_names=["tip"])])
- satisfy_html_path(generator, path)
- generator.text("Tip")
- assert_equal('<p class="help">Help</p><p class="tip">Tip', generator.as_string())
-
-
- @istest
- def class_names_match_if_they_are_the_same(self):
- generator = _create_html_generator()
- generator.start("p", {"class": "tip"})
- generator.text("Help")
- path = html_paths.path([html_paths.element(["p"], class_names=["tip"])])
- satisfy_html_path(generator, path)
- generator.text("Tip")
- assert_equal('<p class="tip">HelpTip', generator.as_string())
-
-
-@istest
-class AppendPathTests(object):
- @istest
- def already_opened_elements_are_not_closed(self):
- generator = _create_html_generator()
- generator.start("strong")
- path = html_paths.path([html_paths.element(["em"])])
- append_html_path(generator, path)
- generator.text("Hello!")
- assert_equal('<strong><em>Hello!', generator.as_string())
-
-
-def _create_html_generator():
- return HtmlGenerator(HtmlWriter)