diff options
| author | Michael Williamson <mike@zwobble.org> | 2017-02-16 11:43:57 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2017-02-16 11:43:57 +0000 |
| commit | c626ef8e1047fb9f27fc4db8c17783a711bd566a (patch) | |
| tree | a05304ee03c8277df9b04584f72eed8e92464eeb /lib | |
| parent | 82d37396cdb2c9dce47fd1686e1219d67db03faf (diff) | |
Hide state in body reader from callers
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/docx/body-reader.js | 39 | ||||
| -rw-r--r-- | lib/docx/docx-reader.js | 4 |
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, |
