summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2014-04-22 11:41:11 +0100
committerMichael Williamson <mike@zwobble.org>2014-04-22 11:41:11 +0100
commitbaafeb9304ad9505d76d57962711060035e40558 (patch)
tree1e784fc2788915878d6e520ed26332f9f173a9f3
parent15bf7ff1863049a7cad09719fa90b0e416b7715b (diff)
Add safer method for text extraction from elements
-rw-r--r--lib/docx/document-xml-reader.js2
-rw-r--r--lib/xmlreader.js9
2 files changed, 10 insertions, 1 deletions
diff --git a/lib/docx/document-xml-reader.js b/lib/docx/document-xml-reader.js
index a23aa5f..15a2dae 100644
--- a/lib/docx/document-xml-reader.js
+++ b/lib/docx/document-xml-reader.js
@@ -104,7 +104,7 @@ function DocumentXmlReader(relationships, contentTypes, docxFile, numbering) {
return new Result(properties);
},
"w:t": function(element) {
- return new Result(new documents.Text(element.children[0].value));
+ return new Result(new documents.Text(element.text()));
},
"w:tab": function(element) {
return new Result(new documents.Tab());
diff --git a/lib/xmlreader.js b/lib/xmlreader.js
index 51f24a7..f219d2b 100644
--- a/lib/xmlreader.js
+++ b/lib/xmlreader.js
@@ -105,6 +105,15 @@ Element.prototype.getElementsByTagName = function(name) {
return toElementList(elements);
};
+Element.prototype.text = function() {
+ if (this.children.length === 0) {
+ return "";
+ } else if (this.children.length !== 1 || this.children[0].type !== "text") {
+ throw new Error("Not implemented");
+ }
+ return this.children[0].value;
+};
+
var elementListPrototype = {
getElementsByTagName: function(name) {
return toElementList(_.flatten(this.map(function(element) {