From b43cc1ae918da47dceea730ee75c7e3e4365e12f Mon Sep 17 00:00:00 2001 From: Nick Brewer Date: Thu, 31 Jan 2019 17:58:48 -0600 Subject: [PATCH] Add configuration option to disable the render of templates. No template would render if the diff shows no difference in its comparison. --- src/diff2html.js | 3 ++- src/line-by-line-printer.js | 2 ++ test/line-by-line-tests.js | 19 ++++++++++++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/diff2html.js b/src/diff2html.js index 7931496..6d7dba2 100644 --- a/src/diff2html.js +++ b/src/diff2html.js @@ -19,7 +19,8 @@ matching: 'none', matchWordsThreshold: 0.25, matchingMaxComparisons: 2500, - maxLineLengthHighlight: 10000 + maxLineLengthHighlight: 10000, + renderNothingWhenEmpty: false, }; /* diff --git a/src/line-by-line-printer.js b/src/line-by-line-printer.js index bdba538..8b41cc5 100644 --- a/src/line-by-line-printer.js +++ b/src/line-by-line-printer.js @@ -26,6 +26,8 @@ } LineByLinePrinter.prototype.makeFileDiffHtml = function(file, diffs) { + if (this.config.renderNothingWhenEmpty && file.blocks && !file.blocks.length) return ''; + var fileDiffTemplate = hoganUtils.template(baseTemplatesPath, 'file-diff'); var filePathTemplate = hoganUtils.template(genericTemplatesPath, 'file-path'); var fileIconTemplate = hoganUtils.template(iconsBaseTemplatesPath, 'file'); diff --git a/test/line-by-line-tests.js b/test/line-by-line-tests.js index 767e959..69b6dab 100644 --- a/test/line-by-line-tests.js +++ b/test/line-by-line-tests.js @@ -279,6 +279,23 @@ describe('LineByLinePrinter', function() { ' \n' + ''; + assert.equal(expected, fileHtml); + }); + it('should return empty when option renderNothingWhenEmpty is true and file blocks not present', function() { + var lineByLinePrinter = new LineByLinePrinter({ + renderNothingWhenEmpty: true, + }); + + var file = { + blocks: [], + }; + + var diffs = 'Random Html'; + + var fileHtml = lineByLinePrinter.makeFileDiffHtml(file, diffs); + + var expected = ''; + assert.equal(expected, fileHtml); }); }); @@ -399,7 +416,7 @@ describe('LineByLinePrinter', function() { isCombined: false }]; - var lineByLinePrinter = new LineByLinePrinter(); + var lineByLinePrinter = new LineByLinePrinter({ renderNothingWhenEmpty: false }); var html = lineByLinePrinter.generateLineByLineJsonHtml(exampleJson); var expected = '
\n' +