From 4a06df603919808ebf8e03679772217c4221abf2 Mon Sep 17 00:00:00 2001 From: Paulo Bu Date: Sun, 20 Dec 2015 15:51:56 +0100 Subject: [PATCH] Makes LineByLine more object oriented --- src/html-printer.js | 4 +++- src/line-by-line-printer.js | 28 +++++++++++++++------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/html-printer.js b/src/html-printer.js index aa3588f..6cc280a 100644 --- a/src/html-printer.js +++ b/src/html-printer.js @@ -13,7 +13,9 @@ function HtmlPrinter() { } - HtmlPrinter.prototype.generateLineByLineJsonHtml = lineByLinePrinter.generateLineByLineJsonHtml; + HtmlPrinter.prototype.generateLineByLineJsonHtml = function(diffFiles, config) { + return lineByLinePrinter.generateLineByLineJsonHtml(diffFiles, config); + }; HtmlPrinter.prototype.generateSideBySideJsonHtml = sideBySidePrinter.generateSideBySideJsonHtml; diff --git a/src/line-by-line-printer.js b/src/line-by-line-printer.js index 834f20c..b92fdae 100644 --- a/src/line-by-line-printer.js +++ b/src/line-by-line-printer.js @@ -16,14 +16,15 @@ } LineByLinePrinter.prototype.generateLineByLineJsonHtml = function(diffFiles, config) { + self = this; return '
\n' + diffFiles.map(function(file) { var diffs; if (file.blocks.length) { - diffs = generateFileHtml(file, config); + diffs = self.generateFileHtml(file, config); } else { - diffs = generateEmptyDiff(); + diffs = self.generateEmptyDiff(); } return '
\n' + @@ -58,7 +59,8 @@ return Rematch.distance(amod, bmod); }); - function generateFileHtml(file, config) { + LineByLinePrinter.prototype.generateFileHtml = function(file, config) { + self = this; return file.blocks.map(function(block) { var lines = '\n' + @@ -101,15 +103,15 @@ var diff = printerUtils.diffHighlight(oldLine.content, newLine.content, config); processedOldLines += - generateLineHtml(deleteType, oldLine.oldNumber, oldLine.newNumber, + self.generateLineHtml(deleteType, oldLine.oldNumber, oldLine.newNumber, diff.first.line, diff.first.prefix); processedNewLines += - generateLineHtml(insertType, newLine.oldNumber, newLine.newNumber, + self.generateLineHtml(insertType, newLine.oldNumber, newLine.newNumber, diff.second.line, diff.second.prefix); } lines += processedOldLines + processedNewLines; - lines += processLines(oldLines.slice(common), newLines.slice(common)); + lines += self.processLines(oldLines.slice(common), newLines.slice(common)); processedOldLines = []; processedNewLines = []; @@ -127,9 +129,9 @@ processChangeBlock(); } if (line.type == diffParser.LINE_TYPE.CONTEXT) { - lines += generateLineHtml(line.type, line.oldNumber, line.newNumber, escapedLine); + lines += self.generateLineHtml(line.type, line.oldNumber, line.newNumber, escapedLine); } else if (line.type == diffParser.LINE_TYPE.INSERTS && !oldLines.length) { - lines += generateLineHtml(line.type, line.oldNumber, line.newNumber, escapedLine); + lines += self.generateLineHtml(line.type, line.oldNumber, line.newNumber, escapedLine); } else if (line.type == diffParser.LINE_TYPE.DELETES) { oldLines.push(line); } else if (line.type == diffParser.LINE_TYPE.INSERTS && !!oldLines.length) { @@ -146,25 +148,25 @@ }).join('\n'); } - function processLines(oldLines, newLines) { + LineByLinePrinter.prototype.processLines = function(oldLines, newLines) { var lines = ''; for (j = 0; j < oldLines.length; j++) { var oldLine = oldLines[j]; var oldEscapedLine = utils.escape(oldLine.content); - lines += generateLineHtml(oldLine.type, oldLine.oldNumber, oldLine.newNumber, oldEscapedLine); + lines += this.generateLineHtml(oldLine.type, oldLine.oldNumber, oldLine.newNumber, oldEscapedLine); } for (j = 0; j < newLines.length; j++) { var newLine = newLines[j]; var newEscapedLine = utils.escape(newLine.content); - lines += generateLineHtml(newLine.type, newLine.oldNumber, newLine.newNumber, newEscapedLine); + lines += this.generateLineHtml(newLine.type, newLine.oldNumber, newLine.newNumber, newEscapedLine); } return lines; } - function generateLineHtml(type, oldNumber, newNumber, content, prefix) { + LineByLinePrinter.prototype.generateLineHtml = function(type, oldNumber, newNumber, content, prefix) { var htmlPrefix = ''; if (prefix) { htmlPrefix = '' + prefix + ''; @@ -186,7 +188,7 @@ '\n'; } - function generateEmptyDiff() { + LineByLinePrinter.prototype.generateEmptyDiff = function() { return '\n' + ' ' + '
' +