aboutsummaryrefslogtreecommitdiff
path: root/lib/docx/styles-reader.js
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2019-03-17 10:24:44 +0000
committerMichael Williamson <mike@zwobble.org>2019-03-17 10:24:44 +0000
commit59d569588c22a429b6da8a696119b7b35a6603a9 (patch)
tree70f29c19ec1ba318c282759ffe9f596652938f24 /lib/docx/styles-reader.js
parentfcd3d606cfcd58e715705aaae0627a425e5484a5 (diff)
Read numbering styles
Diffstat (limited to 'lib/docx/styles-reader.js')
-rw-r--r--lib/docx/styles-reader.js35
1 files changed, 26 insertions, 9 deletions
diff --git a/lib/docx/styles-reader.js b/lib/docx/styles-reader.js
index ae288ab..d99dbb7 100644
--- a/lib/docx/styles-reader.js
+++ b/lib/docx/styles-reader.js
@@ -2,7 +2,7 @@ exports.readStylesXml = readStylesXml;
exports.Styles = Styles;
exports.defaultStyles = new Styles({}, {});
-function Styles(paragraphStyles, characterStyles, tableStyles) {
+function Styles(paragraphStyles, characterStyles, tableStyles, numberingStyles) {
return {
findParagraphStyleById: function(styleId) {
return paragraphStyles[styleId];
@@ -12,32 +12,40 @@ function Styles(paragraphStyles, characterStyles, tableStyles) {
},
findTableStyleById: function(styleId) {
return tableStyles[styleId];
+ },
+ findNumberingStyleById: function(styleId) {
+ return numberingStyles[styleId];
}
};
}
-Styles.EMPTY = new Styles({}, {}, {});
+Styles.EMPTY = new Styles({}, {}, {}, {});
function readStylesXml(root) {
var paragraphStyles = {};
var characterStyles = {};
var tableStyles = {};
-
+ var numberingStyles = {};
+
var styles = {
"paragraph": paragraphStyles,
"character": characterStyles,
"table": tableStyles
};
-
+
root.getElementsByTagName("w:style").forEach(function(styleElement) {
var style = readStyleElement(styleElement);
- var styleSet = styles[style.type];
- if (styleSet) {
- styleSet[style.styleId] = style;
+ if (style.type === "numbering") {
+ numberingStyles[style.styleId] = readNumberingStyleElement(styleElement);
+ } else {
+ var styleSet = styles[style.type];
+ if (styleSet) {
+ styleSet[style.styleId] = style;
+ }
}
});
-
- return new Styles(paragraphStyles, characterStyles, tableStyles);
+
+ return new Styles(paragraphStyles, characterStyles, tableStyles, numberingStyles);
}
function readStyleElement(styleElement) {
@@ -51,3 +59,12 @@ function styleName(styleElement) {
var nameElement = styleElement.first("w:name");
return nameElement ? nameElement.attributes["w:val"] : null;
}
+
+function readNumberingStyleElement(styleElement) {
+ var numId = styleElement
+ .firstOrEmpty("w:pPr")
+ .firstOrEmpty("w:numPr")
+ .firstOrEmpty("w:numId")
+ .attributes["w:val"];
+ return {numId: numId};
+}