aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2013-04-01 12:39:38 +0100
committerMichael Williamson <mike@zwobble.org>2013-04-01 12:39:38 +0100
commitf397a47dd2bb9e294ff86d4a4747234b85887819 (patch)
tree694effb34d5ad34c6a9c809b3d01d7ab286781bc
parente8e2652dac7f2f36158136c3c30072c801d2b1d2 (diff)
Read bold and italic properties on runs
-rw-r--r--lib/docx-reader.js2
-rw-r--r--lib/xmlreader.js2
-rw-r--r--tests/docx-reader.tests.js32
3 files changed, 34 insertions, 2 deletions
diff --git a/lib/docx-reader.js b/lib/docx-reader.js
index d30a822..44b3393 100644
--- a/lib/docx-reader.js
+++ b/lib/docx-reader.js
@@ -90,6 +90,8 @@ var xmlElementReaders = {
if (styleElement) {
properties.styleName = styleElement.attributes["w:val"];
}
+ properties.isBold = !!element.first("w:b");
+ properties.isItalic = !!element.first("w:i");
return properties;
},
diff --git a/lib/xmlreader.js b/lib/xmlreader.js
index 3efad63..7c15019 100644
--- a/lib/xmlreader.js
+++ b/lib/xmlreader.js
@@ -65,7 +65,7 @@ function mapValues(input, mapper, context) {
function Element(name, attributes, children) {
this.type = "element";
this.name = name;
- this.attributes = attributes;
+ this.attributes = attributes || {};
this.children = children || [];
}
diff --git a/tests/docx-reader.tests.js b/tests/docx-reader.tests.js
index f0a4b6e..005f808 100644
--- a/tests/docx-reader.tests.js
+++ b/tests/docx-reader.tests.js
@@ -51,11 +51,37 @@ describe("docx-reader", function() {
describe("readElement", function() {
test("reads styles from run properties", function() {
var runStyleXml = new XmlElement("w:rStyle", {"w:val": "Emphasis"});
- var runPropertiesXml = new XmlElement("w:rPr", {}, [runStyleXml]);
+ var runPropertiesXml = createRunPropertiesXml([runStyleXml]);
var element = docxReader.readXmlElement(runPropertiesXml);
assert.equal(element.styleName, "Emphasis");
});
+ test("isBold is false if bold element is not present", function() {
+ var runPropertiesXml = createRunPropertiesXml([]);
+ var element = docxReader.readXmlElement(runPropertiesXml);
+ assert.equal(element.isBold, false);
+ });
+
+ test("isBold is true if bold element is present", function() {
+ var boldXml = new XmlElement("w:b");
+ var runPropertiesXml = createRunPropertiesXml([boldXml]);
+ var element = docxReader.readXmlElement(runPropertiesXml);
+ assert.equal(element.isBold, true);
+ });
+
+ test("isItalic is false if bold element is not present", function() {
+ var runPropertiesXml = createRunPropertiesXml([]);
+ var element = docxReader.readXmlElement(runPropertiesXml);
+ assert.equal(element.isItalic, false);
+ });
+
+ test("isItalic is true if bold element is present", function() {
+ var italicXml = new XmlElement("w:i");
+ var runPropertiesXml = createRunPropertiesXml([italicXml]);
+ var element = docxReader.readXmlElement(runPropertiesXml);
+ assert.equal(element.isItalic, true);
+ });
+
test("run properties are attached to run", function() {
var runStyleXml = new XmlElement("w:rStyle", {"w:val": "Emphasis"});
var runPropertiesXml = new XmlElement("w:rPr", {}, [runStyleXml]);
@@ -72,3 +98,7 @@ describe("readElement", function() {
assert.deepEqual(element.children, []);
});
});
+
+function createRunPropertiesXml(children) {
+ return new XmlElement("w:rPr", {}, children);
+}