diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-04-01 12:26:27 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-04-01 12:26:27 +0100 |
| commit | d99c29f5bf1b597f7fb2c823d7894032f6c17010 (patch) | |
| tree | ac7fa9b799ec7e2b3a088ade7826cf5d7f2baf4b | |
| parent | 6a9f7140a8f67a9af33c30dbd0acd61496ba1e91 (diff) | |
Add reading of run properties element
| -rw-r--r-- | lib/docx-reader.js | 13 | ||||
| -rw-r--r-- | lib/xmlreader.js | 5 | ||||
| -rw-r--r-- | tests/docx-reader.tests.js | 10 |
3 files changed, 26 insertions, 2 deletions
diff --git a/lib/docx-reader.js b/lib/docx-reader.js index 606c61b..2ab27bf 100644 --- a/lib/docx-reader.js +++ b/lib/docx-reader.js @@ -1,4 +1,5 @@ exports.read = read; +exports.readXmlElement = readXmlElement; var q = require("q"); var _ = require("underscore"); @@ -82,6 +83,18 @@ var xmlElementReaders = { var children = readXmlElements(element.children); return new documents.Run(children); }, + "w:rPr": function(element) { + var properties = { + type: "runProperties" + }; + + var styleElement = element.first("w:rStyle"); + if (styleElement) { + properties.styleName = styleElement.attributes["w:val"]; + } + + return properties; + }, "w:t": function(element) { return new documents.Text(element.children[0].value); } diff --git a/lib/xmlreader.js b/lib/xmlreader.js index 67dda38..3efad63 100644 --- a/lib/xmlreader.js +++ b/lib/xmlreader.js @@ -3,6 +3,7 @@ var sax = require("sax"); var _ = require("underscore"); exports.read = read; +exports.Element = Element; function read(xmlString) { var parser = sax.parser(true, {xmlns: true, position: false}); @@ -61,11 +62,11 @@ function mapValues(input, mapper, context) { }, {}, context); } -function Element(name, attributes) { +function Element(name, attributes, children) { this.type = "element"; this.name = name; this.attributes = attributes; - this.children = []; + this.children = children || []; } Element.prototype.first = function(name) { diff --git a/tests/docx-reader.tests.js b/tests/docx-reader.tests.js index c486f3b..d22cd42 100644 --- a/tests/docx-reader.tests.js +++ b/tests/docx-reader.tests.js @@ -2,6 +2,7 @@ var assert = require("assert"); var docxReader = require("../lib/docx-reader"); var documents = require("../lib/documents"); +var XmlElement = require("../lib/xmlreader").Element; var testing = require("./testing"); var test = testing.test; @@ -46,3 +47,12 @@ 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 element = docxReader.readXmlElement(runPropertiesXml); + assert.equal(element.styleName, "Emphasis"); + }); +}); |
