diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-12-14 16:36:27 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-12-14 16:36:27 +0000 |
| commit | 996491337023abe6033c3caf76dfa4501bd27ce3 (patch) | |
| tree | 5d3c4bac5e7e47451e5aef0ac4d8a53b9927522b /mammoth | |
| parent | f1791fd544d01c118951fdca96b63a151d808941 (diff) | |
Generate styles for runs
Diffstat (limited to 'mammoth')
| -rw-r--r-- | mammoth/conversion.py | 31 | ||||
| -rw-r--r-- | mammoth/document_matchers.py | 1 |
2 files changed, 26 insertions, 6 deletions
diff --git a/mammoth/conversion.py b/mammoth/conversion.py index e3a6fe1..a4cf63b 100644 --- a/mammoth/conversion.py +++ b/mammoth/conversion.py @@ -39,7 +39,17 @@ class DocumentConverter(object): def _convert_run(self, run, html_generator): - self._convert_elements_to_html(run.children, html_generator) + run_generator = HtmlGenerator() + html_path = self._find_html_path_for_run(run) + if html_path: + satisfy_html_path(run_generator, html_path) + if run.is_bold: + run_generator.start("strong") + if run.is_italic: + run_generator.start("em") + self._convert_elements_to_html(run.children, run_generator) + run_generator.end_all() + html_generator.append(run_generator) def _convert_text(self, text, html_generator): @@ -52,14 +62,23 @@ class DocumentConverter(object): def _find_html_path_for_paragraph(self, paragraph): + default = html_paths.path([html_paths.element("p")]) + return self._find_html_path(paragraph, "paragraph", default) + + def _find_html_path_for_run(self, run): + return self._find_html_path(run, "run", default=None) + + + def _find_html_path(self, element, element_type, default): for style in self._styles: document_matcher = style.document_matcher - if document_matcher.element_type == "paragraph" and ( + if document_matcher.element_type == element_type and ( document_matcher.style_name is None or - document_matcher.style_name == paragraph.style_name): + document_matcher.style_name == element.style_name): return style.html_path - if paragraph.style_name is not None: - self.messages.append(results.warning("Unrecognised paragraph style: {0}".format(paragraph.style_name))) + if element.style_name is not None: + self.messages.append(results.warning("Unrecognised {0} style: {1}".format(element_type, element.style_name))) + + return default - return html_paths.path([html_paths.element("p")]) diff --git a/mammoth/document_matchers.py b/mammoth/document_matchers.py index e7cd12c..ed4171b 100644 --- a/mammoth/document_matchers.py +++ b/mammoth/document_matchers.py @@ -14,3 +14,4 @@ def run(style_name=None): RunMatcher = collections.namedtuple("RunMatcher", ["style_name"]) +RunMatcher.element_type = "run" |
