aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2014-04-22 12:03:30 +0100
committerMichael Williamson <mike@zwobble.org>2014-04-22 12:03:30 +0100
commit796bce72195a448fc752668a7e16555acf0d7700 (patch)
treef902981dd4c240eb898cefc9c059a17f7f073401
parent0326c56e24f7333381c7ef8c17aba0ac8380c02b (diff)
Add styleName property to Run
-rw-r--r--lib/documents.js1
-rw-r--r--lib/docx/document-xml-reader.js7
-rw-r--r--tests/docx/document-xml-reader.tests.js23
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);