aboutsummaryrefslogtreecommitdiff
path: root/lib/numbering-xml.js
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2013-05-03 18:12:21 +0100
committerMichael Williamson <mike@zwobble.org>2013-05-03 18:12:21 +0100
commit23438dd97f93b86115cc4196c88d12e5168acbd5 (patch)
tree79b37ef7b0474b64f8649d33a86d7f17b877085e /lib/numbering-xml.js
parent7663d1a7e71df101f177ce5b19dade4696f753b0 (diff)
Read numbering from document.xml
Diffstat (limited to 'lib/numbering-xml.js')
-rw-r--r--lib/numbering-xml.js24
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;