diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-12-14 15:38:28 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-12-14 15:38:28 +0000 |
| commit | 2920e3642ccc1afcd22cf5d4de5fd92f2cee5003 (patch) | |
| tree | 4264b07ba214b98c11dfd751ab602a539507671a /mammoth/html_generation.py | |
| parent | 93c52cf6be9633f97e903233db47648844407d2e (diff) | |
Match class names when satisfying HTML paths
Diffstat (limited to 'mammoth/html_generation.py')
| -rw-r--r-- | mammoth/html_generation.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/mammoth/html_generation.py b/mammoth/html_generation.py index a4d716e..563e2d6 100644 --- a/mammoth/html_generation.py +++ b/mammoth/html_generation.py @@ -49,6 +49,9 @@ class HtmlGenerator(object): class _Element(object): def __init__(self, name, attributes): + if attributes is None: + attributes = {} + self.name = name self.attributes = attributes self.written = False @@ -76,13 +79,25 @@ def satisfy_html_path(generator, path): for element in path.elements[first_unsatisfied_index:]: attributes = {} if element.class_names: - attributes["class"] = " ".join(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 generated_element.name not in path_element.names or path_element.fresh: + 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) |
