12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- exports.readStylesXml = readStylesXml;
- exports.Styles = Styles;
- exports.defaultStyles = new Styles({}, {});
- function Styles(paragraphStyles, characterStyles, tableStyles, numberingStyles) {
- return {
- findParagraphStyleById: function(styleId) {
- return paragraphStyles[styleId];
- },
- findCharacterStyleById: function(styleId) {
- return characterStyles[styleId];
- },
- findTableStyleById: function(styleId) {
- return tableStyles[styleId];
- },
- findNumberingStyleById: function(styleId) {
- return numberingStyles[styleId];
- }
- };
- }
- 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);
- 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, numberingStyles);
- }
- function readStyleElement(styleElement) {
- var type = styleElement.attributes["w:type"];
- var styleId = styleElement.attributes["w:styleId"];
- var name = styleName(styleElement);
- return {type: type, styleId: styleId, name: name};
- }
- 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};
- }
|