aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/documents.js10
-rw-r--r--lib/docx/document-xml-reader.js8
-rw-r--r--tests/docx/document-xml-reader.tests.js15
3 files changed, 32 insertions, 1 deletions
diff --git a/lib/documents.js b/lib/documents.js
index 46699bc..c26c76a 100644
--- a/lib/documents.js
+++ b/lib/documents.js
@@ -10,7 +10,8 @@ var types = {
footnote: "footnote",
table: "table",
tableRow: "tableRow",
- tableCell: "tableCell"
+ tableCell: "tableCell",
+ lineBreak: "lineBreak"
};
function Document(children, options) {
@@ -121,6 +122,12 @@ function TableCell(children) {
};
}
+function LineBreak() {
+ return {
+ type: types.lineBreak
+ };
+}
+
exports.Document = Document;
exports.Paragraph = Paragraph;
exports.Run = Run;
@@ -134,3 +141,4 @@ exports.Image = Image;
exports.Table = Table;
exports.TableRow = TableRow;
exports.TableCell = TableCell;
+exports.LineBreak = LineBreak;
diff --git a/lib/docx/document-xml-reader.js b/lib/docx/document-xml-reader.js
index e0a8ad3..1209cb6 100644
--- a/lib/docx/document-xml-reader.js
+++ b/lib/docx/document-xml-reader.js
@@ -168,6 +168,14 @@ function DocumentXmlReader(options) {
footnoteId: footnoteId
}));
},
+ "w:br": function(element) {
+ var breakType = element.attributes["w:type"];
+ if (breakType) {
+ return new Result([], [warning("Unsupported break type: " + breakType)]);
+ } else {
+ return new Result(new documents.LineBreak());
+ }
+ },
"w:ins": readChildElements,
"w:smartTag": readChildElements,
diff --git a/tests/docx/document-xml-reader.tests.js b/tests/docx/document-xml-reader.tests.js
index 6fa3949..d021c3a 100644
--- a/tests/docx/document-xml-reader.tests.js
+++ b/tests/docx/document-xml-reader.tests.js
@@ -5,6 +5,7 @@ var documents = require("../../lib/documents");
var XmlElement = require("../../lib/xmlreader").Element;
var Numbering = require("../../lib/docx/numbering-xml").Numbering;
var Styles = require("../../lib/docx/styles-reader").Styles;
+var warning = require("../../lib/results").warning;
var testing = require("../testing");
var test = testing.test;
@@ -320,6 +321,20 @@ describe("readXmlElement: ", function() {
assert.deepEqual(result.value[0].type, "run");
});
+ test("w:br is read as line break", function() {
+ var breakXml = new XmlElement("w:br", {}, []);
+ var result = readXmlElement(breakXml);
+ assert.deepEqual(result.value.type, "lineBreak");
+ assert.deepEqual(result.messages, []);
+ });
+
+ test("warning on breaks that aren't line breaks", function() {
+ var breakXml = new XmlElement("w:br", {"w:type": "page"}, []);
+ var result = readXmlElement(breakXml);
+ assert.deepEqual(result.value, []);
+ assert.deepEqual(result.messages, [warning("Unsupported break type: page")]);
+ });
+
});
describe("convertXmlToDocument: ", function() {