From dee71ef0fc6f21aee4c4685dd67b721147cbb159 Mon Sep 17 00:00:00 2001 From: John McLear Date: Thu, 17 Jul 2014 14:54:09 +0100 Subject: underline support and test coverage for underline --- lib/document-to-html.js | 3 +++ lib/documents.js | 1 + lib/docx/document-xml-reader.js | 1 + tests/document-to-html.tests.js | 18 ++++++++++++++++++ tests/docx/document-xml-reader.tests.js | 15 ++++++++++++++- 5 files changed, 37 insertions(+), 1 deletion(-) diff --git a/lib/document-to-html.js b/lib/document-to-html.js index 7e37255..35fb3e6 100644 --- a/lib/document-to-html.js +++ b/lib/document-to-html.js @@ -100,6 +100,9 @@ function DocumentConversion(options) { if (run.isBold) { runHtml.open(htmlPaths.element("strong")); } + if (run.isUnderline) { + runHtml.open(htmlPaths.element("u")); + } if (run.isItalic) { runHtml.open(htmlPaths.element("em")); } diff --git a/lib/documents.js b/lib/documents.js index 07062ab..46699bc 100644 --- a/lib/documents.js +++ b/lib/documents.js @@ -42,6 +42,7 @@ function Run(children, properties) { styleId: properties.styleId || null, styleName: properties.styleName || null, isBold: properties.isBold, + isUnderline: properties.isUnderline, isItalic: properties.isItalic }; } diff --git a/lib/docx/document-xml-reader.js b/lib/docx/document-xml-reader.js index 84773e9..e0a8ad3 100644 --- a/lib/docx/document-xml-reader.js +++ b/lib/docx/document-xml-reader.js @@ -131,6 +131,7 @@ function DocumentXmlReader(options) { } } properties.isBold = !!element.first("w:b"); + properties.isUnderline = !!element.first("w:u"); properties.isItalic = !!element.first("w:i"); return new Result(properties); diff --git a/tests/document-to-html.tests.js b/tests/document-to-html.tests.js index 3b3bd9b..e8d6d27 100644 --- a/tests/document-to-html.tests.js +++ b/tests/document-to-html.tests.js @@ -139,6 +139,24 @@ describe('DocumentConverter', function() { }); }); + test('underline runs are wrapped in tags', function() { + var run = runOfText("Hello.", {isUnderline: true}); + var converter = new DocumentConverter(); + return converter.convertToHtml(run).then(function(result) { + assert.equal(result.value, "Hello."); + }); + }); + + test('underline runs can exist inside other tags', function() { + var run = new documents.Paragraph([ + runOfText("Hello.", {isUnderline: true}) + ]); + var converter = new DocumentConverter(); + return converter.convertToHtml(run).then(function(result) { + assert.equal(result.value, "

Hello.

"); + }); + }); + test('italic runs are wrapped in tags', function() { var run = runOfText("Hello.", {isItalic: true}); var converter = new DocumentConverter(); diff --git a/tests/docx/document-xml-reader.tests.js b/tests/docx/document-xml-reader.tests.js index 2c0f8ea..6fa3949 100644 --- a/tests/docx/document-xml-reader.tests.js +++ b/tests/docx/document-xml-reader.tests.js @@ -127,7 +127,20 @@ describe("readXmlElement: ", function() { var run = readXmlElementValue(runXml); assert.equal(run.isBold, true); }); - + + test("isUnderline is false if underline element is not present", function() { + var runXml = runWithProperties([]); + var run = readXmlElementValue(runXml); + assert.deepEqual(run.isUnderline, false); + }); + + test("isUnderline is true if underline element is present", function() { + var underlineXml = new XmlElement("w:u"); + var runXml = runWithProperties([underlineXml]); + var run = readXmlElementValue(runXml); + assert.equal(run.isUnderline, true); + }); + test("isItalic is false if bold element is not present", function() { var runXml = runWithProperties([]); var run = readXmlElementValue(runXml); -- cgit v1.2.3