diff options
| -rw-r--r-- | lib/documents.js | 10 | ||||
| -rw-r--r-- | lib/docx/document-xml-reader.js | 8 | ||||
| -rw-r--r-- | tests/docx/document-xml-reader.tests.js | 15 |
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() { |
