aboutsummaryrefslogtreecommitdiff
path: root/lib/docx/notes-reader.js
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-07-03 22:31:29 +0100
committerMichael Williamson <mike@zwobble.org>2015-07-03 22:31:29 +0100
commit27f3d32cabc5fae5b163ddf5a5449d93ebd959d5 (patch)
tree373e830e2c15ad5252000c06aba70e4b144127d4 /lib/docx/notes-reader.js
parentcd3b84e15ea1a47ff8ebcca18d68ef0cdccf20b8 (diff)
Read note bodies immediately using relationships
Diffstat (limited to 'lib/docx/notes-reader.js')
-rw-r--r--lib/docx/notes-reader.js19
1 files changed, 12 insertions, 7 deletions
diff --git a/lib/docx/notes-reader.js b/lib/docx/notes-reader.js
index 98cbba9..a74f79b 100644
--- a/lib/docx/notes-reader.js
+++ b/lib/docx/notes-reader.js
@@ -1,11 +1,14 @@
-exports.readFootnotesXml = createReader("footnote");
-exports.readEndnotesXml = createReader("endnote");
+var documents = require("../documents");
+var Result = require("../results").Result;
-function createReader(noteType) {
+exports.createFootnotesReader = createReader.bind(this, "footnote");
+exports.createEndnotesReader = createReader.bind(this, "endnote");
+
+function createReader(noteType, bodyReader) {
function readNotesXml(xml) {
- return xml.root.getElementsByTagName("w:" + noteType)
+ return Result.combine(xml.root.getElementsByTagName("w:" + noteType)
.filter(isFootnoteElement)
- .map(readFootnoteElement);
+ .map(readFootnoteElement));
}
function isFootnoteElement(element) {
@@ -15,8 +18,10 @@ function createReader(noteType) {
function readFootnoteElement(footnoteElement) {
var id = footnoteElement.attributes["w:id"];
- var body = footnoteElement.children;
- return {noteType: noteType, id: id, body: body};
+ return bodyReader.readXmlElements(footnoteElement.children)
+ .map(function(body) {
+ return documents.Note({noteType: noteType, noteId: id, body: body});
+ });
}
return readNotesXml;