From 63dff589c822e8256ff8e6b38f78e696ba734c44 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 25 Feb 2016 19:27:23 +0000 Subject: Allow bold runs to be configured using style mapping --- lib/document-to-html.js | 10 +++++----- tests/document-to-html.tests.js | 17 ++++++++++++++++- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/lib/document-to-html.js b/lib/document-to-html.js index 3d3e8db..ab02b64 100644 --- a/lib/document-to-html.js +++ b/lib/document-to-html.js @@ -107,7 +107,7 @@ function DocumentConversion(options) { convertElements(run.children, messages, function(error, children) { var result = Html.fragment(children); if (run.isStrikethrough) { - result = convertStrikethrough(result); + result = convertRunProperty(result, "strikethrough", "s"); } if (run.isUnderline) { result = convertUnderline(result); @@ -122,7 +122,7 @@ function DocumentConversion(options) { result = wrapInNonFreshElement(result, "em"); } if (run.isBold) { - result = wrapInNonFreshElement(result, "strong"); + result = convertRunProperty(result, "bold", "strong"); } if (style) { result = Html.pathToNode(style.to, [result]); @@ -139,12 +139,12 @@ function DocumentConversion(options) { return (options.convertUnderline || defaultConvertUnderline)(runHtml); } - function convertStrikethrough(result) { - var style = findStyle({type: "strikethrough"}); + function convertRunProperty(result, elementType, defaultTagName) { + var style = findStyle({type: elementType}); if (style) { return Html.pathToNode(style.to, [result]); } else { - return wrapInNonFreshElement(result, "s"); + return wrapInNonFreshElement(result, defaultTagName); } } diff --git a/tests/document-to-html.tests.js b/tests/document-to-html.tests.js index 7180191..779c584 100644 --- a/tests/document-to-html.tests.js +++ b/tests/document-to-html.tests.js @@ -140,7 +140,7 @@ describe('DocumentConverter', function() { }); }); - test('bold runs are wrapped in tags', function() { + test('bold runs are wrapped in tags by default', function() { var run = runOfText("Hello.", {isBold: true}); var converter = new DocumentConverter(); return converter.convertToHtml(run).then(function(result) { @@ -148,6 +148,21 @@ describe('DocumentConverter', function() { }); }); + test('bold runs can be configured with style mapping', function() { + var run = runOfText("Hello.", {isBold: true}); + var converter = new DocumentConverter({ + styleMap: [ + { + from: documentMatchers.bold, + to: htmlPaths.elements([htmlPaths.element("em")]) + } + ] + }); + return converter.convertToHtml(run).then(function(result) { + assert.equal(result.value, "Hello."); + }); + }); + test('bold runs can exist inside other tags', function() { var run = new documents.Paragraph([ runOfText("Hello.", {isBold: true}) -- cgit v1.2.3