diff options
| author | Michael Williamson <mike@zwobble.org> | 2014-04-22 12:03:30 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2014-04-22 12:03:30 +0100 |
| commit | 796bce72195a448fc752668a7e16555acf0d7700 (patch) | |
| tree | f902981dd4c240eb898cefc9c059a17f7f073401 | |
| parent | 0326c56e24f7333381c7ef8c17aba0ac8380c02b (diff) | |
Add styleName property to Run
| -rw-r--r-- | lib/documents.js | 1 | ||||
| -rw-r--r-- | lib/docx/document-xml-reader.js | 7 | ||||
| -rw-r--r-- | tests/docx/document-xml-reader.tests.js | 23 |
3 files changed, 25 insertions, 6 deletions
diff --git a/lib/documents.js b/lib/documents.js index 4ccd93a..061c8c1 100644 --- a/lib/documents.js +++ b/lib/documents.js @@ -33,6 +33,7 @@ function Run(children, properties) { type: types.run, children: children, styleId: properties.styleId || null, + styleName: properties.styleName || null, isBold: properties.isBold, isItalic: properties.isItalic }; diff --git a/lib/docx/document-xml-reader.js b/lib/docx/document-xml-reader.js index da95a36..462cd61 100644 --- a/lib/docx/document-xml-reader.js +++ b/lib/docx/document-xml-reader.js @@ -108,7 +108,12 @@ function DocumentXmlReader(options) { var styleElement = element.first("w:rStyle"); if (styleElement) { - properties.styleId = styleElement.attributes["w:val"]; + var styleId = styleElement.attributes["w:val"]; + properties.styleId = styleId; + if (styleId) { + var style = styles.findCharacterStyleById(styleId); + properties.styleName = style.name; + } } properties.isBold = !!element.first("w:b"); properties.isItalic = !!element.first("w:i"); diff --git a/tests/docx/document-xml-reader.tests.js b/tests/docx/document-xml-reader.tests.js index 8e28081..af43c16 100644 --- a/tests/docx/document-xml-reader.tests.js +++ b/tests/docx/document-xml-reader.tests.js @@ -87,11 +87,24 @@ describe("readXmlElement: ", function() { assert.deepEqual(run.styleId, null); }); - test("run has style name read from run properties if present", function() { - var runStyleXml = new XmlElement("w:rStyle", {"w:val": "Emphasis"}); + test("run has style ID read from run properties if present", function() { + var runStyleXml = new XmlElement("w:rStyle", {"w:val": "Heading1Char"}); var runXml = runWithProperties([runStyleXml]); - var run = readXmlElementValue(runXml); - assert.deepEqual(run.styleId, "Emphasis"); + + var styles = new Styles({}, {"Heading1Char": {name: "Heading 1 Char"}}); + + var run = readXmlElementValue(runXml, {styles: styles}); + assert.deepEqual(run.styleId, "Heading1Char"); + }); + + test("run has style name read from run properties and styles", function() { + var runStyleXml = new XmlElement("w:rStyle", {"w:val": "Heading1Char"}); + var runXml = runWithProperties([runStyleXml]); + + var styles = new Styles({}, {"Heading1Char": {name: "Heading 1 Char"}}); + + var run = readXmlElementValue(runXml, {styles: styles}); + assert.deepEqual(run.styleName, "Heading 1 Char"); }); test("isBold is false if bold element is not present", function() { @@ -121,7 +134,7 @@ describe("readXmlElement: ", function() { }); test("run properties not included as child of run", function() { - var runStyleXml = new XmlElement("w:rStyle", {"w:val": "Emphasis"}); + var runStyleXml = new XmlElement("w:rStyle"); var runPropertiesXml = new XmlElement("w:rPr", {}, [runStyleXml]); var runXml = new XmlElement("w:r", {}, [runPropertiesXml]); var result = readXmlElement(runXml); |
