diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-04-01 12:39:38 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-04-01 12:39:38 +0100 |
| commit | f397a47dd2bb9e294ff86d4a4747234b85887819 (patch) | |
| tree | 694effb34d5ad34c6a9c809b3d01d7ab286781bc | |
| parent | e8e2652dac7f2f36158136c3c30072c801d2b1d2 (diff) | |
Read bold and italic properties on runs
| -rw-r--r-- | lib/docx-reader.js | 2 | ||||
| -rw-r--r-- | lib/xmlreader.js | 2 | ||||
| -rw-r--r-- | tests/docx-reader.tests.js | 32 |
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); +} |
