UNPKG

mammoth-style

Version:

Convert Word documents (.docx files) to HTML (with style)

56 lines (50 loc) 1.6 kB
exports.readNumberingXml = readNumberingXml; exports.Numbering = Numbering; exports.defaultNumbering = new Numbering({}); function Numbering(nums) { return { findLevel: function(numId, level) { var num = nums[numId]; if (num) { return num[level]; } else { return null; } } }; } function readNumberingXml(root) { var abstractNums = readAbstractNums(root); var nums = readNums(root, abstractNums); return new Numbering(nums); } function readAbstractNums(root) { var abstractNums = {}; 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, format: numFmt }; }); return levels; } function readNums(root, abstractNums) { var nums = {}; 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; }