diff options
| author | Michael Williamson <mike@zwobble.org> | 2014-08-30 11:55:28 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2014-08-30 11:55:28 +0100 |
| commit | cc671a920c1ce5886fcc6629965000bfc469fea1 (patch) | |
| tree | 1005d4320810ef9a463aaf7c80e32212360f3554 /mammoth/conversion.py | |
| parent | 5f86739e1b61306d716634d7657c6242bffd982a (diff) | |
Generate HTML for footnotes
Diffstat (limited to 'mammoth/conversion.py')
| -rw-r--r-- | mammoth/conversion.py | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/mammoth/conversion.py b/mammoth/conversion.py index e5526d5..c1299f6 100644 --- a/mammoth/conversion.py +++ b/mammoth/conversion.py @@ -1,3 +1,5 @@ +# coding=utf-8 + import base64 import random @@ -45,7 +47,8 @@ class DocumentConverter(object): documents.TableCell: self._convert_table_cell, documents.LineBreak: self._line_break, documents.Image: convert_image or images.inline(self._convert_image), - documents.FootnoteReference: self._footnote_reference, + documents.FootnoteReference: self._convert_footnote_reference, + documents.Footnote: self._convert_footnote, } self._convert_underline = convert_underline @@ -56,6 +59,14 @@ class DocumentConverter(object): def _convert_document(self, document, html_generator): self._convert_elements_to_html(document.children, html_generator) + html_generator.end_all() + html_generator.start("ol") + footnotes = [ + document.footnotes.find_footnote_by_id(footnote_id) + for footnote_id in self._footnote_ids + ] + self._convert_elements_to_html(footnotes, html_generator) + html_generator.end() def _convert_paragraph(self, paragraph, html_generator): @@ -130,7 +141,7 @@ class DocumentConverter(object): "src": "data:{0};base64,{1}".format(image.content_type, encoded_src) } - def _footnote_reference(self, footnote_reference, html_generator): + def _convert_footnote_reference(self, footnote_reference, html_generator): uid = self._footnote_uid(footnote_reference.footnote_id) html_generator.start("sup") html_generator.start("a", { @@ -142,6 +153,18 @@ class DocumentConverter(object): html_generator.text("[{0}]".format(footnote_number)) html_generator.end() html_generator.end() + + def _convert_footnote(self, footnote, html_generator): + uid = self._footnote_uid(footnote.id) + html_generator.start("li", {"id": "footnote-{0}".format(uid)}) + footnote_generator = HtmlGenerator() + self._convert_elements_to_html(footnote.body, footnote_generator) + footnote_generator.text(" ") + footnote_generator.start("a", {"href": "#footnote-ref-{0}".format(uid)}) + footnote_generator.text(u"↑") + footnote_generator.end_all() + html_generator.append(footnote_generator) + html_generator.end() def _convert_elements_to_html(self, elements, html_generator): |
