aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2017-02-16 11:43:57 +0000
committerMichael Williamson <mike@zwobble.org>2017-02-16 11:43:57 +0000
commitc626ef8e1047fb9f27fc4db8c17783a711bd566a (patch)
treea05304ee03c8277df9b04584f72eed8e92464eeb /lib
parent82d37396cdb2c9dce47fd1686e1219d67db03faf (diff)
Hide state in body reader from callers
Diffstat (limited to 'lib')
-rw-r--r--lib/docx/body-reader.js39
-rw-r--r--lib/docx/docx-reader.js4
2 files changed, 28 insertions, 15 deletions
diff --git a/lib/docx/body-reader.js b/lib/docx/body-reader.js
index a0a90fd..e92f8b4 100644
--- a/lib/docx/body-reader.js
+++ b/lib/docx/body-reader.js
@@ -1,4 +1,5 @@
-exports.BodyReader = BodyReader;
+exports.createBodyReader = createBodyReader;
+exports._readNumberingProperties = readNumberingProperties;
var _ = require("underscore");
@@ -7,6 +8,16 @@ var Result = require("../results").Result;
var warning = require("../results").warning;
var uriToZipEntryName = require("./uris").uriToZipEntryName;
+function createBodyReader(options) {
+ return {
+ readXmlElement: function(element) {
+ return new BodyReader(options).readXmlElement(element);
+ },
+ readXmlElements: function(elements) {
+ return new BodyReader(options).readXmlElements(elements);
+ }
+ };
+}
function BodyReader(options) {
var fieldHyperlink = null;
@@ -126,7 +137,7 @@ function BodyReader(options) {
styleId: style.styleId,
styleName: style.name,
alignment: element.firstOrEmpty("w:jc").attributes["w:val"],
- numbering: readNumberingProperties(element.firstOrEmpty("w:numPr"))
+ numbering: readNumberingProperties(element.firstOrEmpty("w:numPr"), numbering)
};
});
},
@@ -227,21 +238,12 @@ function BodyReader(options) {
"wp:anchor": readDrawingElement,
"v:imagedata": readImageData
};
+
return {
readXmlElement: readXmlElement,
- readXmlElements: readXmlElements,
- _readNumberingProperties: readNumberingProperties
+ readXmlElements: readXmlElements
};
- function readNumberingProperties(element) {
- var level = element.firstOrEmpty("w:ilvl").attributes["w:val"];
- var numId = element.firstOrEmpty("w:numId").attributes["w:val"];
- if (level === undefined || numId === undefined) {
- return null;
- } else {
- return numbering.findLevel(numId, level);
- }
- }
function readTable(element) {
return readXmlElements(element.children)
@@ -396,6 +398,17 @@ function BodyReader(options) {
type + " style with ID " + styleId + " was referenced but not defined in the document");
}
}
+
+
+function readNumberingProperties(element, numbering) {
+ var level = element.firstOrEmpty("w:ilvl").attributes["w:val"];
+ var numId = element.firstOrEmpty("w:numId").attributes["w:val"];
+ if (level === undefined || numId === undefined) {
+ return null;
+ } else {
+ return numbering.findLevel(numId, level);
+ }
+}
var supportedImageTypes = {
"image/png": true,
diff --git a/lib/docx/docx-reader.js b/lib/docx/docx-reader.js
index 0c7d57f..5aa95ca 100644
--- a/lib/docx/docx-reader.js
+++ b/lib/docx/docx-reader.js
@@ -7,7 +7,7 @@ var documents = require("../documents");
var Result = require("../results").Result;
var readXmlFromZipFile = require("./office-xml-reader").readXmlFromZipFile;
-var BodyReader = require("./body-reader").BodyReader;
+var createBodyReader = require("./body-reader").createBodyReader;
var DocumentXmlReader = require("./document-xml-reader").DocumentXmlReader;
var relationshipsReader = require("./relationships-reader");
var contentTypesReader = require("./content-types-reader");
@@ -95,7 +95,7 @@ function readXmlFileWithBody(name, options, func) {
});
return readRelationshipsFromZipFile(options.docxFile).then(function(relationships) {
- var bodyReader = new BodyReader({
+ var bodyReader = new createBodyReader({
relationships: relationships,
contentTypes: options.contentTypes,
docxFile: options.docxFile,