aboutsummaryrefslogtreecommitdiff
path: root/mammoth
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-01-25 17:06:54 +0000
committerMichael Williamson <mike@zwobble.org>2015-01-25 17:06:54 +0000
commit1483a864719cedabc0d6c6bcd98e0b2d9d3ce0c1 (patch)
tree8f5db7dde7d0f1952890f5ba97af7c958c212d13 /mammoth
parentabdcd67365d663c878fd370cb97e77ce74c2b1a7 (diff)
Use prefix to generate IDs
Diffstat (limited to 'mammoth')
-rw-r--r--mammoth/__init__.py4
-rw-r--r--mammoth/conversion.py29
-rw-r--r--mammoth/documents.py4
3 files changed, 19 insertions, 18 deletions
diff --git a/mammoth/__init__.py b/mammoth/__init__.py
index b0ffa12..c7b305d 100644
--- a/mammoth/__init__.py
+++ b/mammoth/__init__.py
@@ -3,13 +3,13 @@ from . import docx, conversion, options, documents, images, underline
__all__ = ["convert_to_html", "extract_raw_text", "images", "underline"]
-def convert_to_html(fileobj, transform_document=None, generate_uniquifier=None, **kwargs):
+def convert_to_html(fileobj, transform_document=None, id_prefix=None, **kwargs):
if transform_document is None:
transform_document = lambda x: x
return docx.read(fileobj).map(transform_document).bind(lambda document:
conversion.convert_document_element_to_html(
document,
- generate_uniquifier=generate_uniquifier,
+ id_prefix=id_prefix,
**options.read_options(kwargs)
)
)
diff --git a/mammoth/conversion.py b/mammoth/conversion.py
index 6ef13c8..0eb3ccc 100644
--- a/mammoth/conversion.py
+++ b/mammoth/conversion.py
@@ -12,29 +12,29 @@ def convert_document_element_to_html(element,
style_map=None,
convert_image=None,
convert_underline=None,
- generate_uniquifier=None):
+ id_prefix=None):
if style_map is None:
style_map = []
- if generate_uniquifier is None:
- generate_uniquifier = lambda: random.randint(0, 1000000000000000)
+ if id_prefix is None:
+ id_prefix = str(random.randint(0, 1000000000000000))
html_generator = HtmlGenerator()
converter = DocumentConverter(style_map,
convert_image=convert_image,
convert_underline=convert_underline,
- generate_uniquifier=generate_uniquifier)
+ id_prefix=id_prefix)
converter.convert_element_to_html(element, html_generator,)
html_generator.end_all()
return results.Result(html_generator.html_string(), converter.messages)
class DocumentConverter(object):
- def __init__(self, style_map, convert_image, convert_underline, generate_uniquifier):
+ def __init__(self, style_map, convert_image, convert_underline, id_prefix):
self.messages = []
self._style_map = style_map
- self._uniquifier = generate_uniquifier()
+ self._id_prefix = id_prefix
self._note_references = []
self._converters = {
documents.Document: self._convert_document,
@@ -147,11 +147,10 @@ class DocumentConverter(object):
}
def _convert_note_reference(self, note_reference, html_generator):
- uid = self._note_uid(note_reference.note_id)
html_generator.start("sup")
html_generator.start("a", {
- "href": "#{0}-{1}".format(note_reference.note_type, uid),
- "id": "{0}-ref-{1}".format(note_reference.note_type, uid),
+ "href": "#" + self._note_html_id(note_reference),
+ "id": self._note_ref_html_id(note_reference),
})
self._note_references.append(note_reference);
note_number = len(self._note_references)
@@ -160,12 +159,11 @@ class DocumentConverter(object):
html_generator.end()
def _convert_note(self, note, html_generator):
- uid = self._note_uid(note.id)
- html_generator.start("li", {"id": "{0}-{1}".format(note.note_type, uid)})
+ html_generator.start("li", {"id": self._note_html_id(note)})
note_generator = HtmlGenerator()
self._convert_elements_to_html(note.body, note_generator)
note_generator.text(" ")
- note_generator.start("a", {"href": "#{0}-ref-{1}".format(note.note_type, uid)})
+ note_generator.start("a", {"href": "#" + self._note_ref_html_id(note)})
note_generator.text(_up_arrow)
note_generator.end_all()
html_generator.append(note_generator)
@@ -200,8 +198,11 @@ class DocumentConverter(object):
return default
- def _note_uid(self, note_id):
- return "{0}-{1}".format(self._uniquifier, note_id)
+ def _note_html_id(self, note):
+ return "{0}-{1}-{2}".format(self._id_prefix, note.note_type, note.note_id)
+
+ def _note_ref_html_id(self, note):
+ return "{0}-{1}-ref-{2}".format(self._id_prefix, note.note_type, note.note_id)
def _document_matcher_matches(matcher, element, element_type):
diff --git a/mammoth/documents.py b/mammoth/documents.py
index 9effce8..1adcc0d 100644
--- a/mammoth/documents.py
+++ b/mammoth/documents.py
@@ -67,7 +67,7 @@ def numbering_level(level_index, is_ordered):
_NumberingLevel = dodge.data_class("NumberingLevel", ["level_index", "is_ordered"])
-note = Note = dodge.data_class("Note", ["note_type", "id", "body"])
+note = Note = dodge.data_class("Note", ["note_type", "note_id", "body"])
class Notes(object):
@@ -93,6 +93,6 @@ def notes(notes_list):
))
def _note_key(note):
- return (note.note_type, note.id)
+ return (note.note_type, note.note_id)
note_reference = NoteReference = dodge.data_class("NoteReference", ["note_type", "note_id"])