Merge pull request #10 from rtfpessoa/fix-diff-html-escaping

fix html escaping on diff
This commit is contained in:
Rodrigo Fernandes 2015-06-21 22:49:38 +01:00
commit 232bf20322
6 changed files with 28 additions and 23 deletions

16
dist/diff2html.js vendored
View file

@ -834,6 +834,7 @@ function require() {
// dirty hack for browser compatibility
var jsDiff = (typeof JsDiff !== "undefined" && JsDiff) || require("../lib/diff.js");
var utils = require("./utils.js").Utils;
function PrinterUtils() {
}
@ -876,9 +877,10 @@ function require() {
diff.forEach(function (part) {
var elemType = part.added ? 'ins' : part.removed ? 'del' : null;
var escapedValue = utils.escape(part.value);
if (elemType !== null) highlightedLine += "<" + elemType + ">" + part.value + "</" + elemType + ">";
else highlightedLine += part.value;
if (elemType !== null) highlightedLine += "<" + elemType + ">" + escapedValue + "</" + elemType + ">";
else highlightedLine += escapedValue;
});
return {
@ -1010,18 +1012,15 @@ function require() {
} else {
var j = 0;
var oldLine, newLine;
var oldEscapedLine, newEscapedLine;
if (oldLines.length === newLines.length) {
for (j = 0; j < oldLines.length; j++) {
oldLine = oldLines[j];
newLine = newLines[j];
oldEscapedLine = utils.escape(oldLine.content);
newEscapedLine = utils.escape(newLine.content);
config.isCombined = file.isCombined;
var diff = printerUtils.diffHighlight(oldEscapedLine, newEscapedLine, config);
var diff = printerUtils.diffHighlight(oldLine.content, newLine.content, config);
fileHtml.left += generateSingleLineHtml(oldLine.type, oldLine.oldNumber, diff.first.line, diff.first.prefix);
fileHtml.right += generateSingleLineHtml(newLine.type, newLine.newNumber, diff.second.line, diff.second.prefix);
@ -1184,17 +1183,14 @@ function require() {
} else {
var j = 0;
var oldLine, newLine;
var oldEscapedLine, newEscapedLine;
if (oldLines.length === newLines.length) {
for (j = 0; j < oldLines.length; j++) {
oldLine = oldLines[j];
newLine = newLines[j];
oldEscapedLine = utils.escape(oldLine.content);
newEscapedLine = utils.escape(newLine.content);
config.isCombined = file.isCombined;
var diff = printerUtils.diffHighlight(oldEscapedLine, newEscapedLine, config);
var diff = printerUtils.diffHighlight(oldLine.content, newLine.content, config);
processedOldLines += generateLineHtml(oldLine.type, oldLine.oldNumber, oldLine.newNumber, diff.first.line, diff.first.prefix);
processedNewLines += generateLineHtml(newLine.type, newLine.oldNumber, newLine.newNumber, diff.second.line, diff.second.prefix);

File diff suppressed because one or more lines are too long

View file

@ -12,7 +12,7 @@
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/styles/github.min.css">
<!--
<link rel="stylesheet" type="text/css" href="../css/diff2html.min.css">
<link rel="stylesheet" type="text/css" href="../css/diff2html.css">
<script type="text/javascript" src="../lib/diff.js"></script>
<script type="text/javascript" src="../lib/fakeRequire.js"></script>
<script type="text/javascript" src="../src/utils.js"></script>
@ -190,7 +190,20 @@
'@@ -1,3 +0,0 @@\n' +
'-define(function() {\n' +
'- return typeof undefined;\n' +
'-});\n';
'-});\n' +
'diff --git a/components/textdiff/textdiff.html b/components/textdiff/textdiff.html\n' +
'index a3484bf..82209af 100644\n' +
'--- a/components/textdiff/textdiff.html\n' +
'+++ b/components/textdiff/textdiff.html\n' +
'@@ -1,6 +1,8 @@\n' +
' <!-- ko if: isShowingDiffs -->\n' +
' <div>\n' +
'- <div data-bind="event: { load: setDom($element) }"></div>\n' +
'+ <!-- ko if: isParsed -->\n' +
'+ <div data-bind="template: {nodes: ko.utils.parseHtmlFragment(htmlSrc())}"></div>\n' +
'+ <!-- /ko -->\n' +
' <div class="btn-load-more" data-bind="visible: loadMoreCount() > 0">\n' +
' </div>\n';
$(document).ready(function () {
var diff2Html = Diff2Html;

View file

@ -72,17 +72,14 @@
} else {
var j = 0;
var oldLine, newLine;
var oldEscapedLine, newEscapedLine;
if (oldLines.length === newLines.length) {
for (j = 0; j < oldLines.length; j++) {
oldLine = oldLines[j];
newLine = newLines[j];
oldEscapedLine = utils.escape(oldLine.content);
newEscapedLine = utils.escape(newLine.content);
config.isCombined = file.isCombined;
var diff = printerUtils.diffHighlight(oldEscapedLine, newEscapedLine, config);
var diff = printerUtils.diffHighlight(oldLine.content, newLine.content, config);
processedOldLines += generateLineHtml(oldLine.type, oldLine.oldNumber, oldLine.newNumber, diff.first.line, diff.first.prefix);
processedNewLines += generateLineHtml(newLine.type, newLine.oldNumber, newLine.newNumber, diff.second.line, diff.second.prefix);

View file

@ -9,6 +9,7 @@
// dirty hack for browser compatibility
var jsDiff = (typeof JsDiff !== "undefined" && JsDiff) || require("../lib/diff.js");
var utils = require("./utils.js").Utils;
function PrinterUtils() {
}
@ -51,9 +52,10 @@
diff.forEach(function (part) {
var elemType = part.added ? 'ins' : part.removed ? 'del' : null;
var escapedValue = utils.escape(part.value);
if (elemType !== null) highlightedLine += "<" + elemType + ">" + part.value + "</" + elemType + ">";
else highlightedLine += part.value;
if (elemType !== null) highlightedLine += "<" + elemType + ">" + escapedValue + "</" + elemType + ">";
else highlightedLine += escapedValue;
});
return {

View file

@ -96,18 +96,15 @@
} else {
var j = 0;
var oldLine, newLine;
var oldEscapedLine, newEscapedLine;
if (oldLines.length === newLines.length) {
for (j = 0; j < oldLines.length; j++) {
oldLine = oldLines[j];
newLine = newLines[j];
oldEscapedLine = utils.escape(oldLine.content);
newEscapedLine = utils.escape(newLine.content);
config.isCombined = file.isCombined;
var diff = printerUtils.diffHighlight(oldEscapedLine, newEscapedLine, config);
var diff = printerUtils.diffHighlight(oldLine.content, newLine.content, config);
fileHtml.left += generateSingleLineHtml(oldLine.type, oldLine.oldNumber, diff.first.line, diff.first.prefix);
fileHtml.right += generateSingleLineHtml(newLine.type, newLine.newNumber, diff.second.line, diff.second.prefix);