diff --git a/src/diff2html.js b/src/diff2html.js
index 2bf86ba..ad5664f 100644
--- a/src/diff2html.js
+++ b/src/diff2html.js
@@ -15,12 +15,24 @@
function Diff2Html() {
}
+ /*
+ * config
+ * {
+ * "wordByWord" : true (default)
+ * OR
+ * "charByChar" : true
+ * }
+ *
+ */
+
/*
* Generates pretty html from string diff input
*/
- Diff2Html.prototype.getPrettyHtmlFromDiff = function (diffInput) {
+ Diff2Html.prototype.getPrettyHtmlFromDiff = function (diffInput, config) {
var diffJson = diffParser.generateDiffJson(diffInput);
- return htmlPrinter.generateLineByLineJsonHtml(diffJson);
+
+ var configOrEmpty = config || {};
+ return htmlPrinter.generateLineByLineJsonHtml(diffJson, configOrEmpty);
};
/*
@@ -33,23 +45,27 @@
/*
* Generates pretty html from a json object
*/
- Diff2Html.prototype.getPrettyHtmlFromJson = function (diffJson) {
- return htmlPrinter.generateLineByLineJsonHtml(diffJson);
+ Diff2Html.prototype.getPrettyHtmlFromJson = function (diffJson, config) {
+ var configOrEmpty = config || {};
+ return htmlPrinter.generateLineByLineJsonHtml(diffJson, configOrEmpty);
};
/*
* Generates pretty side by side html from string diff input
*/
- Diff2Html.prototype.getPrettySideBySideHtmlFromDiff = function (diffInput) {
+ Diff2Html.prototype.getPrettySideBySideHtmlFromDiff = function (diffInput, config) {
var diffJson = diffParser.generateDiffJson(diffInput);
- return htmlPrinter.generateSideBySideJsonHtml(diffJson);
+
+ var configOrEmpty = config || {};
+ return htmlPrinter.generateSideBySideJsonHtml(diffJson, configOrEmpty);
};
/*
* Generates pretty side by side html from a json object
*/
- Diff2Html.prototype.getPrettySideBySideHtmlFromJson = function (diffJson) {
- return htmlPrinter.generateSideBySideJsonHtml(diffJson);
+ Diff2Html.prototype.getPrettySideBySideHtmlFromJson = function (diffJson, config) {
+ var configOrEmpty = config || {};
+ return htmlPrinter.generateSideBySideJsonHtml(diffJson, configOrEmpty);
};
if (typeof module !== 'undefined' && module.exports) {
diff --git a/src/line-by-line-printer.js b/src/line-by-line-printer.js
index d936278..20b040d 100644
--- a/src/line-by-line-printer.js
+++ b/src/line-by-line-printer.js
@@ -14,7 +14,7 @@
function LineByLinePrinter() {
}
- LineByLinePrinter.prototype.generateLineByLineJsonHtml = function (diffFiles) {
+ LineByLinePrinter.prototype.generateLineByLineJsonHtml = function (diffFiles, config) {
return "
\n" +
diffFiles.map(function (file) {
return "
\n" +
@@ -29,7 +29,7 @@
"
\n" +
"
\n" +
" \n" +
- " " + generateFileHtml(file) +
+ " " + generateFileHtml(file, config) +
" \n" +
"
\n" +
"
\n" +
@@ -39,7 +39,7 @@
"
\n";
};
- function generateFileHtml(file) {
+ function generateFileHtml(file, config) {
return file.blocks.map(function (block) {
var lines = "
\n" +
@@ -76,7 +76,8 @@
oldEscapedLine = utils.escape(oldLine.content);
newEscapedLine = utils.escape(newLine.content);
- var diff = printerUtils.diffHighlight(oldEscapedLine, newEscapedLine, file.isTripleDiff);
+ config.isTripleDiff = file.isTripleDiff;
+ var diff = printerUtils.diffHighlight(oldEscapedLine, newEscapedLine, config);
processedOldLines += generateLineHtml(oldLine.type, oldLine.oldNumber, oldLine.newNumber, diff.o);
processedNewLines += generateLineHtml(newLine.type, newLine.oldNumber, newLine.newNumber, diff.n);
diff --git a/src/printer-utils.js b/src/printer-utils.js
index bd016ef..2ea00d4 100644
--- a/src/printer-utils.js
+++ b/src/printer-utils.js
@@ -25,12 +25,12 @@
}
};
- PrinterUtils.prototype.diffHighlight = function (diffLine1, diffLine2, isTripleDiff) {
+ PrinterUtils.prototype.diffHighlight = function (diffLine1, diffLine2, config) {
var lineStart1, lineStart2;
var prefixSize = 1;
- if (isTripleDiff) prefixSize = 2;
+ if (config.isTripleDiff) prefixSize = 2;
lineStart1 = diffLine1.substr(0, prefixSize);
lineStart2 = diffLine2.substr(0, prefixSize);
@@ -38,7 +38,12 @@
diffLine1 = diffLine1.substr(prefixSize);
diffLine2 = diffLine2.substr(prefixSize);
- var diff = jsDiff.diffChars(diffLine1, diffLine2);
+ var diff;
+ if (config.charByChar) diff = jsDiff.diffChars(diffLine1, diffLine2);
+ else diff = jsDiff.diffWordsWithSpace(diffLine1, diffLine2);
+
+ //var diff = jsDiff.diffChars(diffLine1, diffLine2);
+ //var diff = jsDiff.diffWordsWithSpace(diffLine1, diffLine2);
var highlightedLine = "";
diff --git a/src/side-by-side-printer.js b/src/side-by-side-printer.js
index f3307c8..dca025f 100644
--- a/src/side-by-side-printer.js
+++ b/src/side-by-side-printer.js
@@ -14,10 +14,10 @@
function SideBySidePrinter() {
}
- SideBySidePrinter.prototype.generateSideBySideJsonHtml = function (diffFiles) {
+ SideBySidePrinter.prototype.generateSideBySideJsonHtml = function (diffFiles, config) {
return "\n" +
diffFiles.map(function (file) {
- var diffs = generateSideBySideFileHtml(file);
+ var diffs = generateSideBySideFileHtml(file, config);
return "
\n" +
" \n";
};
- function generateSideBySideFileHtml(file) {
+ function generateSideBySideFileHtml(file, config) {
var fileHtml = {};
fileHtml.left = "";
fileHtml.right = "";
@@ -101,7 +101,9 @@
oldEscapedLine = utils.escape(oldLine.content);
newEscapedLine = utils.escape(newLine.content);
- var diff = printerUtils.diffHighlight(oldEscapedLine, newEscapedLine, file.isTripleDiff);
+ config.isTripleDiff = file.isTripleDiff;
+
+ var diff = printerUtils.diffHighlight(oldEscapedLine, newEscapedLine, config);
fileHtml.left += generateSingleLineHtml(oldLine.type, oldLine.oldNumber, diff.o);
fileHtml.right += generateSingleLineHtml(newLine.type, newLine.newNumber, diff.n);