Skip to content

Commit 232bf20

Browse files
author
Rodrigo Fernandes
committed
Merge pull request #10 from rtfpessoa/fix-diff-html-escaping
fix html escaping on diff
2 parents ea5456a + 5cc3ebf commit 232bf20

File tree

6 files changed

+28
-23
lines changed

6 files changed

+28
-23
lines changed

dist/diff2html.js

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -834,6 +834,7 @@ function require() {
834834

835835
// dirty hack for browser compatibility
836836
var jsDiff = (typeof JsDiff !== "undefined" && JsDiff) || require("../lib/diff.js");
837+
var utils = require("./utils.js").Utils;
837838

838839
function PrinterUtils() {
839840
}
@@ -876,9 +877,10 @@ function require() {
876877

877878
diff.forEach(function (part) {
878879
var elemType = part.added ? 'ins' : part.removed ? 'del' : null;
880+
var escapedValue = utils.escape(part.value);
879881

880-
if (elemType !== null) highlightedLine += "<" + elemType + ">" + part.value + "</" + elemType + ">";
881-
else highlightedLine += part.value;
882+
if (elemType !== null) highlightedLine += "<" + elemType + ">" + escapedValue + "</" + elemType + ">";
883+
else highlightedLine += escapedValue;
882884
});
883885

884886
return {
@@ -1010,18 +1012,15 @@ function require() {
10101012
} else {
10111013
var j = 0;
10121014
var oldLine, newLine;
1013-
var oldEscapedLine, newEscapedLine;
10141015

10151016
if (oldLines.length === newLines.length) {
10161017
for (j = 0; j < oldLines.length; j++) {
10171018
oldLine = oldLines[j];
10181019
newLine = newLines[j];
1019-
oldEscapedLine = utils.escape(oldLine.content);
1020-
newEscapedLine = utils.escape(newLine.content);
10211020

10221021
config.isCombined = file.isCombined;
10231022

1024-
var diff = printerUtils.diffHighlight(oldEscapedLine, newEscapedLine, config);
1023+
var diff = printerUtils.diffHighlight(oldLine.content, newLine.content, config);
10251024

10261025
fileHtml.left += generateSingleLineHtml(oldLine.type, oldLine.oldNumber, diff.first.line, diff.first.prefix);
10271026
fileHtml.right += generateSingleLineHtml(newLine.type, newLine.newNumber, diff.second.line, diff.second.prefix);
@@ -1184,17 +1183,14 @@ function require() {
11841183
} else {
11851184
var j = 0;
11861185
var oldLine, newLine;
1187-
var oldEscapedLine, newEscapedLine;
11881186

11891187
if (oldLines.length === newLines.length) {
11901188
for (j = 0; j < oldLines.length; j++) {
11911189
oldLine = oldLines[j];
11921190
newLine = newLines[j];
1193-
oldEscapedLine = utils.escape(oldLine.content);
1194-
newEscapedLine = utils.escape(newLine.content);
11951191

11961192
config.isCombined = file.isCombined;
1197-
var diff = printerUtils.diffHighlight(oldEscapedLine, newEscapedLine, config);
1193+
var diff = printerUtils.diffHighlight(oldLine.content, newLine.content, config);
11981194

11991195
processedOldLines += generateLineHtml(oldLine.type, oldLine.oldNumber, oldLine.newNumber, diff.first.line, diff.first.prefix);
12001196
processedNewLines += generateLineHtml(newLine.type, newLine.oldNumber, newLine.newNumber, diff.second.line, diff.second.prefix);

dist/diff2html.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sample/index.html

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/styles/github.min.css">
1313

1414
<!--
15-
<link rel="stylesheet" type="text/css" href="../css/diff2html.min.css">
15+
<link rel="stylesheet" type="text/css" href="../css/diff2html.css">
1616
<script type="text/javascript" src="../lib/diff.js"></script>
1717
<script type="text/javascript" src="../lib/fakeRequire.js"></script>
1818
<script type="text/javascript" src="../src/utils.js"></script>
@@ -190,7 +190,20 @@
190190
'@@ -1,3 +0,0 @@\n' +
191191
'-define(function() {\n' +
192192
'- return typeof undefined;\n' +
193-
'-});\n';
193+
'-});\n' +
194+
'diff --git a/components/textdiff/textdiff.html b/components/textdiff/textdiff.html\n' +
195+
'index a3484bf..82209af 100644\n' +
196+
'--- a/components/textdiff/textdiff.html\n' +
197+
'+++ b/components/textdiff/textdiff.html\n' +
198+
'@@ -1,6 +1,8 @@\n' +
199+
' <!-- ko if: isShowingDiffs -->\n' +
200+
' <div>\n' +
201+
'- <div data-bind="event: { load: setDom($element) }"></div>\n' +
202+
'+ <!-- ko if: isParsed -->\n' +
203+
'+ <div data-bind="template: {nodes: ko.utils.parseHtmlFragment(htmlSrc())}"></div>\n' +
204+
'+ <!-- /ko -->\n' +
205+
' <div class="btn-load-more" data-bind="visible: loadMoreCount() > 0">\n' +
206+
' </div>\n';
194207

195208
$(document).ready(function () {
196209
var diff2Html = Diff2Html;

src/line-by-line-printer.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,14 @@
7272
} else {
7373
var j = 0;
7474
var oldLine, newLine;
75-
var oldEscapedLine, newEscapedLine;
7675

7776
if (oldLines.length === newLines.length) {
7877
for (j = 0; j < oldLines.length; j++) {
7978
oldLine = oldLines[j];
8079
newLine = newLines[j];
81-
oldEscapedLine = utils.escape(oldLine.content);
82-
newEscapedLine = utils.escape(newLine.content);
8380

8481
config.isCombined = file.isCombined;
85-
var diff = printerUtils.diffHighlight(oldEscapedLine, newEscapedLine, config);
82+
var diff = printerUtils.diffHighlight(oldLine.content, newLine.content, config);
8683

8784
processedOldLines += generateLineHtml(oldLine.type, oldLine.oldNumber, oldLine.newNumber, diff.first.line, diff.first.prefix);
8885
processedNewLines += generateLineHtml(newLine.type, newLine.oldNumber, newLine.newNumber, diff.second.line, diff.second.prefix);

src/printer-utils.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
// dirty hack for browser compatibility
1111
var jsDiff = (typeof JsDiff !== "undefined" && JsDiff) || require("../lib/diff.js");
12+
var utils = require("./utils.js").Utils;
1213

1314
function PrinterUtils() {
1415
}
@@ -51,9 +52,10 @@
5152

5253
diff.forEach(function (part) {
5354
var elemType = part.added ? 'ins' : part.removed ? 'del' : null;
55+
var escapedValue = utils.escape(part.value);
5456

55-
if (elemType !== null) highlightedLine += "<" + elemType + ">" + part.value + "</" + elemType + ">";
56-
else highlightedLine += part.value;
57+
if (elemType !== null) highlightedLine += "<" + elemType + ">" + escapedValue + "</" + elemType + ">";
58+
else highlightedLine += escapedValue;
5759
});
5860

5961
return {

src/side-by-side-printer.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,18 +96,15 @@
9696
} else {
9797
var j = 0;
9898
var oldLine, newLine;
99-
var oldEscapedLine, newEscapedLine;
10099

101100
if (oldLines.length === newLines.length) {
102101
for (j = 0; j < oldLines.length; j++) {
103102
oldLine = oldLines[j];
104103
newLine = newLines[j];
105-
oldEscapedLine = utils.escape(oldLine.content);
106-
newEscapedLine = utils.escape(newLine.content);
107104

108105
config.isCombined = file.isCombined;
109106

110-
var diff = printerUtils.diffHighlight(oldEscapedLine, newEscapedLine, config);
107+
var diff = printerUtils.diffHighlight(oldLine.content, newLine.content, config);
111108

112109
fileHtml.left += generateSingleLineHtml(oldLine.type, oldLine.oldNumber, diff.first.line, diff.first.prefix);
113110
fileHtml.right += generateSingleLineHtml(newLine.type, newLine.newNumber, diff.second.line, diff.second.prefix);

0 commit comments

Comments
 (0)