From 97eafcd2f76856e8430d68c5e5bfd0f3ab0e50c4 Mon Sep 17 00:00:00 2001 From: Paulo Bu Date: Sun, 27 Dec 2015 11:08:24 +0100 Subject: [PATCH 1/2] Add tests to generateLineHtml for LineByLine tests --- test/line-by-line-tests.js | 42 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/test/line-by-line-tests.js b/test/line-by-line-tests.js index 9331fd8..f30defa 100644 --- a/test/line-by-line-tests.js +++ b/test/line-by-line-tests.js @@ -16,6 +16,48 @@ describe('LineByLinePrinter', function() { ' \n' + '\n'; + assert.equal(expected, fileHtml); + }); + }); + describe('_generateLineHtml', function() { + it('should work for insertions', function() { + + var diffParser = require('../src/diff-parser.js').DiffParser; + var lineByLinePrinter = new LineByLinePrinter({}); + var fileHtml = lineByLinePrinter._generateLineHtml( + diffParser.LINE_TYPE.INSERTS, '', 30, '+', 'test'); + var expected = '\n' + + ' ' + + '
' + + '
30
' + + ' \n' + + ' ' + + '
' + + 'test' + + '+
' + + ' \n' + + '\n'; + + assert.equal(expected, fileHtml); + }); + it('should work for deletions', function() { + + var diffParser = require('../src/diff-parser.js').DiffParser; + var lineByLinePrinter = new LineByLinePrinter({}); + var fileHtml = lineByLinePrinter._generateLineHtml( + diffParser.LINE_TYPE.DELETES, 30, '', '-', 'test'); + var expected = '\n' + + ' ' + + '
30
' + + '
' + + ' \n' + + ' ' + + '
' + + 'test' + + '-
' + + ' \n' + + '\n'; + assert.equal(expected, fileHtml); }); }); From a37176cc26020e74b3fd66ec7c2b5312c10e97ba Mon Sep 17 00:00:00 2001 From: Paulo Bu Date: Sun, 27 Dec 2015 11:08:50 +0100 Subject: [PATCH 2/2] Refactors HTML code into their own methods --- src/line-by-line-printer.js | 91 ++++++++++++++++++++----------------- 1 file changed, 50 insertions(+), 41 deletions(-) diff --git a/src/line-by-line-printer.js b/src/line-by-line-printer.js index 1f248d9..e464bb4 100644 --- a/src/line-by-line-printer.js +++ b/src/line-by-line-printer.js @@ -16,42 +16,44 @@ this.config = config; } + LineByLinePrinter.prototype.makeFileDiffHtml = function(file, diffs) { + return '
\n' + + '
\n' + + '
\n' + + ' ' + + ' +' + file.addedLines + '\n' + + ' \n' + + ' ' + + ' -' + file.deletedLines + '\n' + + ' \n' + + '
\n' + + '
' + printerUtils.getDiffName(file) + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + ' ' + diffs + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + '
\n'; + }; + LineByLinePrinter.prototype.generateLineByLineJsonHtml = function(diffFiles) { var that = this; - return '
\n' + - diffFiles.map(function(file) { - + var htmlDiffs = diffFiles.map(function(file) { var diffs; if (file.blocks.length) { diffs = that._generateFileHtml(file); } else { diffs = that._generateEmptyDiff(); } + return that.makeFileDiffHtml(file, diffs); + }); - return '
\n' + - '
\n' + - '
\n' + - ' ' + - ' +' + file.addedLines + '\n' + - ' \n' + - ' ' + - ' -' + file.deletedLines + '\n' + - ' \n' + - '
\n' + - '
' + printerUtils.getDiffName(file) + '
\n' + - '
\n' + - '
\n' + - '
\n' + - ' \n' + - ' \n' + - ' ' + diffs + - ' \n' + - '
\n' + - '
\n' + - '
\n' + - '
\n'; - }).join('\n') + - '
\n'; + return '
\n' + htmlDiffs.join('\n') + '
\n'; }; var matcher = Rematch.rematch(function(a, b) { @@ -61,17 +63,20 @@ return Rematch.distance(amod, bmod); }); - LineByLinePrinter.prototype._generateFileHtml = function(file) { - var that = this; - return file.blocks.map(function(block) { - - var lines = '\n' + + LineByLinePrinter.prototype.makeColumnLineNumberHtml = function(block) { + return '\n' + ' \n' + ' ' + '
' + utils.escape(block.header) + '
' + ' \n' + '\n'; + }; + LineByLinePrinter.prototype._generateFileHtml = function(file) { + var that = this; + return file.blocks.map(function(block) { + + var lines = that.makeColumnLineNumberHtml(block); var oldLines = []; var newLines = []; @@ -172,6 +177,18 @@ return lines; }; + LineByLinePrinter.prototype.makeLineHtml = function(type, oldNumber, newNumber, htmlPrefix, htmlContent) { + return '\n' + + ' ' + + '
' + utils.valueOrEmpty(oldNumber) + '
' + + '
' + utils.valueOrEmpty(newNumber) + '
' + + ' \n' + + ' ' + + '
' + htmlPrefix + htmlContent + '
' + + ' \n' + + '\n'; + }; + LineByLinePrinter.prototype._generateLineHtml = function(type, oldNumber, newNumber, content, prefix) { var htmlPrefix = ''; if (prefix) { @@ -183,15 +200,7 @@ htmlContent = '' + content + ''; } - return '\n' + - ' ' + - '
' + utils.valueOrEmpty(oldNumber) + '
' + - '
' + utils.valueOrEmpty(newNumber) + '
' + - ' \n' + - ' ' + - '
' + htmlPrefix + htmlContent + '
' + - ' \n' + - '\n'; + return this.makeLineHtml(type, oldNumber, newNumber, htmlPrefix, htmlContent); }; LineByLinePrinter.prototype._generateEmptyDiff = function() {