notes-reader.js 984 B

12345678910111213141516171819202122232425262728
  1. var documents = require("../documents");
  2. var Result = require("../results").Result;
  3. exports.createFootnotesReader = createReader.bind(this, "footnote");
  4. exports.createEndnotesReader = createReader.bind(this, "endnote");
  5. function createReader(noteType, bodyReader) {
  6. function readNotesXml(element) {
  7. return Result.combine(element.getElementsByTagName("w:" + noteType)
  8. .filter(isFootnoteElement)
  9. .map(readFootnoteElement));
  10. }
  11. function isFootnoteElement(element) {
  12. var type = element.attributes["w:type"];
  13. return type !== "continuationSeparator" && type !== "separator";
  14. }
  15. function readFootnoteElement(footnoteElement) {
  16. var id = footnoteElement.attributes["w:id"];
  17. return bodyReader.readXmlElements(footnoteElement.children)
  18. .map(function(body) {
  19. return documents.Note({noteType: noteType, noteId: id, body: body});
  20. });
  21. }
  22. return readNotesXml;
  23. }