aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2014-06-11 14:48:39 +0100
committerMichael Williamson <mike@zwobble.org>2014-06-11 14:48:39 +0100
commitb4e617af3d447f7addd2901d9abaaceb1f9b1d9a (patch)
tree1d705bbf7776ad547b475e43c52611bfc07d4696 /lib
parent0af8351be2b11f5f912ef091c4ce0f117171d5d5 (diff)
Add uniquifier to footnote IDs
Diffstat (limited to 'lib')
-rw-r--r--lib/document-to-html.js13
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) {