diff options
Diffstat (limited to 'lib/numbering-xml.js')
| -rw-r--r-- | lib/numbering-xml.js | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/lib/numbering-xml.js b/lib/numbering-xml.js deleted file mode 100644 index 7e64dc2..0000000 --- a/lib/numbering-xml.js +++ /dev/null @@ -1,63 +0,0 @@ -var readXmlFromZipFile = require("./office-xml-reader").readXmlFromZipFile; - -exports.readNumberingXml = readNumberingXml; -exports.readNumberingFromZipFile = readNumberingFromZipFile; -exports.Numbering = Numbering; - -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]; - if (num) { - return num[level]; - } else { - return null; - } - } - }; -} - -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) { - var id = element.attributes["w:abstractNumId"]; - abstractNums[id] = readAbstractNum(element); - }); - return abstractNums; -} - -function readAbstractNum(element) { - var levels = {}; - element.getElementsByTagName("w:lvl").forEach(function(levelElement) { - var levelIndex = levelElement.attributes["w:ilvl"]; - var numFmt = levelElement.first("w:numFmt").attributes["w:val"]; - levels[levelIndex] = { - isOrdered: numFmt !== "bullet", - level: levelIndex - }; - }); - return levels; -} - -function readNums(xml, abstractNums) { - var nums = {}; - xml.root.getElementsByTagName("w:num").forEach(function(element) { - var id = element.attributes["w:numId"]; - var abstractNumId = element.first("w:abstractNumId").attributes["w:val"]; - nums[id] = abstractNums[abstractNumId]; - }); - return nums; -} |
