diff options
| author | Michael Williamson <mike@zwobble.org> | 2014-06-11 14:48:39 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2014-06-11 14:48:39 +0100 |
| commit | b4e617af3d447f7addd2901d9abaaceb1f9b1d9a (patch) | |
| tree | 1d705bbf7776ad547b475e43c52611bfc07d4696 /lib | |
| parent | 0af8351be2b11f5f912ef091c4ce0f117171d5d5 (diff) | |
Add uniquifier to footnote IDs
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/document-to-html.js | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/lib/document-to-html.js b/lib/document-to-html.js index bec48b0..d7b6a86 100644 --- a/lib/document-to-html.js +++ b/lib/document-to-html.js @@ -31,6 +31,11 @@ function DocumentConversion(options) { var footnoteIds = []; options = options || {}; + var generateUniquifier = options.generateUniquifier || function() { + return Math.floor(Math.random() * 1000000000000000); + }; + var uniquifier = generateUniquifier(); + var defaultParagraphStyle = htmlPaths.topLevelElement("p"); var styleMap = options.styleMap || []; @@ -128,6 +133,10 @@ function DocumentConversion(options) { }).fail(callback); } + function footnoteUid(id) { + return uniquifier + "-" + id; + } + var elementConverters = { "document": function(document, html, messages, callback) { convertElements(document.children, html, messages, function(error) { @@ -173,7 +182,7 @@ function DocumentConversion(options) { }, "footnoteReference": function(element, html, messages, callback) { html.open(htmlPaths.element("sup")); - html.open(htmlPaths.element("a", {href: "#footnote-" + element.footnoteId})); + html.open(htmlPaths.element("a", {href: "#footnote-" + footnoteUid(element.footnoteId)})); footnoteIds.push(element.footnoteId); html.text("[" + (footnoteNumber++) + "]"); html.close(); @@ -181,7 +190,7 @@ function DocumentConversion(options) { callback(); }, "footnote": function(element, html, messages, callback) { - html.open(htmlPaths.element("li", {id: "footnote-" + element.id})); + html.open(htmlPaths.element("li", {id: "footnote-" + footnoteUid(element.id)})); var footnoteHtml = new HtmlGenerator(); convertElements(element.body, footnoteHtml, messages, function(err) { if (err) { |
