diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-05-03 18:12:21 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-05-03 18:12:21 +0100 |
| commit | 23438dd97f93b86115cc4196c88d12e5168acbd5 (patch) | |
| tree | 79b37ef7b0474b64f8649d33a86d7f17b877085e /lib/numbering-xml.js | |
| parent | 7663d1a7e71df101f177ce5b19dade4696f753b0 (diff) | |
Read numbering from document.xml
Diffstat (limited to 'lib/numbering-xml.js')
| -rw-r--r-- | lib/numbering-xml.js | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/lib/numbering-xml.js b/lib/numbering-xml.js index f983448..7e64dc2 100644 --- a/lib/numbering-xml.js +++ b/lib/numbering-xml.js @@ -1,8 +1,17 @@ +var readXmlFromZipFile = require("./office-xml-reader").readXmlFromZipFile; + exports.readNumberingXml = readNumberingXml; +exports.readNumberingFromZipFile = readNumberingFromZipFile; +exports.Numbering = Numbering; -function readNumberingXml(xml) { - var abstractNums = readAbstractNums(xml); - var nums = readNums(xml, abstractNums); +function readNumberingFromZipFile(file) { + return readXmlFromZipFile(file, "word/numbering.xml") + .then(function(xml) { + return xml ? readNumberingXml(xml) : new Numbering({}); + }); +} + +function Numbering(nums) { return { findLevel: function(numId, level) { var num = nums[numId]; @@ -15,6 +24,12 @@ function readNumberingXml(xml) { }; } +function readNumberingXml(xml) { + var abstractNums = readAbstractNums(xml); + var nums = readNums(xml, abstractNums); + return new Numbering(nums); +} + function readAbstractNums(xml) { var abstractNums = {}; xml.root.getElementsByTagName("w:abstractNum").forEach(function(element) { @@ -30,7 +45,8 @@ function readAbstractNum(element) { var levelIndex = levelElement.attributes["w:ilvl"]; var numFmt = levelElement.first("w:numFmt").attributes["w:val"]; levels[levelIndex] = { - isOrdered: numFmt !== "bullet" + isOrdered: numFmt !== "bullet", + level: levelIndex }; }); return levels; |
