fix html escaping on diff
This commit is contained in:
parent
ea5456ad68
commit
5cc3ebf63c
6 changed files with 28 additions and 23 deletions
16
dist/diff2html.js
vendored
16
dist/diff2html.js
vendored
|
|
@ -834,6 +834,7 @@ function require() {
|
||||||
|
|
||||||
// dirty hack for browser compatibility
|
// dirty hack for browser compatibility
|
||||||
var jsDiff = (typeof JsDiff !== "undefined" && JsDiff) || require("../lib/diff.js");
|
var jsDiff = (typeof JsDiff !== "undefined" && JsDiff) || require("../lib/diff.js");
|
||||||
|
var utils = require("./utils.js").Utils;
|
||||||
|
|
||||||
function PrinterUtils() {
|
function PrinterUtils() {
|
||||||
}
|
}
|
||||||
|
|
@ -876,9 +877,10 @@ function require() {
|
||||||
|
|
||||||
diff.forEach(function (part) {
|
diff.forEach(function (part) {
|
||||||
var elemType = part.added ? 'ins' : part.removed ? 'del' : null;
|
var elemType = part.added ? 'ins' : part.removed ? 'del' : null;
|
||||||
|
var escapedValue = utils.escape(part.value);
|
||||||
|
|
||||||
if (elemType !== null) highlightedLine += "<" + elemType + ">" + part.value + "</" + elemType + ">";
|
if (elemType !== null) highlightedLine += "<" + elemType + ">" + escapedValue + "</" + elemType + ">";
|
||||||
else highlightedLine += part.value;
|
else highlightedLine += escapedValue;
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
@ -1010,18 +1012,15 @@ function require() {
|
||||||
} else {
|
} else {
|
||||||
var j = 0;
|
var j = 0;
|
||||||
var oldLine, newLine;
|
var oldLine, newLine;
|
||||||
var oldEscapedLine, newEscapedLine;
|
|
||||||
|
|
||||||
if (oldLines.length === newLines.length) {
|
if (oldLines.length === newLines.length) {
|
||||||
for (j = 0; j < oldLines.length; j++) {
|
for (j = 0; j < oldLines.length; j++) {
|
||||||
oldLine = oldLines[j];
|
oldLine = oldLines[j];
|
||||||
newLine = newLines[j];
|
newLine = newLines[j];
|
||||||
oldEscapedLine = utils.escape(oldLine.content);
|
|
||||||
newEscapedLine = utils.escape(newLine.content);
|
|
||||||
|
|
||||||
config.isCombined = file.isCombined;
|
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.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);
|
fileHtml.right += generateSingleLineHtml(newLine.type, newLine.newNumber, diff.second.line, diff.second.prefix);
|
||||||
|
|
@ -1184,17 +1183,14 @@ function require() {
|
||||||
} else {
|
} else {
|
||||||
var j = 0;
|
var j = 0;
|
||||||
var oldLine, newLine;
|
var oldLine, newLine;
|
||||||
var oldEscapedLine, newEscapedLine;
|
|
||||||
|
|
||||||
if (oldLines.length === newLines.length) {
|
if (oldLines.length === newLines.length) {
|
||||||
for (j = 0; j < oldLines.length; j++) {
|
for (j = 0; j < oldLines.length; j++) {
|
||||||
oldLine = oldLines[j];
|
oldLine = oldLines[j];
|
||||||
newLine = newLines[j];
|
newLine = newLines[j];
|
||||||
oldEscapedLine = utils.escape(oldLine.content);
|
|
||||||
newEscapedLine = utils.escape(newLine.content);
|
|
||||||
|
|
||||||
config.isCombined = file.isCombined;
|
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);
|
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);
|
processedNewLines += generateLineHtml(newLine.type, newLine.oldNumber, newLine.newNumber, diff.second.line, diff.second.prefix);
|
||||||
|
|
|
||||||
2
dist/diff2html.min.js
vendored
2
dist/diff2html.min.js
vendored
File diff suppressed because one or more lines are too long
|
|
@ -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" 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/diff.js"></script>
|
||||||
<script type="text/javascript" src="../lib/fakeRequire.js"></script>
|
<script type="text/javascript" src="../lib/fakeRequire.js"></script>
|
||||||
<script type="text/javascript" src="../src/utils.js"></script>
|
<script type="text/javascript" src="../src/utils.js"></script>
|
||||||
|
|
@ -190,7 +190,20 @@
|
||||||
'@@ -1,3 +0,0 @@\n' +
|
'@@ -1,3 +0,0 @@\n' +
|
||||||
'-define(function() {\n' +
|
'-define(function() {\n' +
|
||||||
'- return typeof undefined;\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 () {
|
$(document).ready(function () {
|
||||||
var diff2Html = Diff2Html;
|
var diff2Html = Diff2Html;
|
||||||
|
|
|
||||||
|
|
@ -72,17 +72,14 @@
|
||||||
} else {
|
} else {
|
||||||
var j = 0;
|
var j = 0;
|
||||||
var oldLine, newLine;
|
var oldLine, newLine;
|
||||||
var oldEscapedLine, newEscapedLine;
|
|
||||||
|
|
||||||
if (oldLines.length === newLines.length) {
|
if (oldLines.length === newLines.length) {
|
||||||
for (j = 0; j < oldLines.length; j++) {
|
for (j = 0; j < oldLines.length; j++) {
|
||||||
oldLine = oldLines[j];
|
oldLine = oldLines[j];
|
||||||
newLine = newLines[j];
|
newLine = newLines[j];
|
||||||
oldEscapedLine = utils.escape(oldLine.content);
|
|
||||||
newEscapedLine = utils.escape(newLine.content);
|
|
||||||
|
|
||||||
config.isCombined = file.isCombined;
|
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);
|
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);
|
processedNewLines += generateLineHtml(newLine.type, newLine.oldNumber, newLine.newNumber, diff.second.line, diff.second.prefix);
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
|
|
||||||
// dirty hack for browser compatibility
|
// dirty hack for browser compatibility
|
||||||
var jsDiff = (typeof JsDiff !== "undefined" && JsDiff) || require("../lib/diff.js");
|
var jsDiff = (typeof JsDiff !== "undefined" && JsDiff) || require("../lib/diff.js");
|
||||||
|
var utils = require("./utils.js").Utils;
|
||||||
|
|
||||||
function PrinterUtils() {
|
function PrinterUtils() {
|
||||||
}
|
}
|
||||||
|
|
@ -51,9 +52,10 @@
|
||||||
|
|
||||||
diff.forEach(function (part) {
|
diff.forEach(function (part) {
|
||||||
var elemType = part.added ? 'ins' : part.removed ? 'del' : null;
|
var elemType = part.added ? 'ins' : part.removed ? 'del' : null;
|
||||||
|
var escapedValue = utils.escape(part.value);
|
||||||
|
|
||||||
if (elemType !== null) highlightedLine += "<" + elemType + ">" + part.value + "</" + elemType + ">";
|
if (elemType !== null) highlightedLine += "<" + elemType + ">" + escapedValue + "</" + elemType + ">";
|
||||||
else highlightedLine += part.value;
|
else highlightedLine += escapedValue;
|
||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -96,18 +96,15 @@
|
||||||
} else {
|
} else {
|
||||||
var j = 0;
|
var j = 0;
|
||||||
var oldLine, newLine;
|
var oldLine, newLine;
|
||||||
var oldEscapedLine, newEscapedLine;
|
|
||||||
|
|
||||||
if (oldLines.length === newLines.length) {
|
if (oldLines.length === newLines.length) {
|
||||||
for (j = 0; j < oldLines.length; j++) {
|
for (j = 0; j < oldLines.length; j++) {
|
||||||
oldLine = oldLines[j];
|
oldLine = oldLines[j];
|
||||||
newLine = newLines[j];
|
newLine = newLines[j];
|
||||||
oldEscapedLine = utils.escape(oldLine.content);
|
|
||||||
newEscapedLine = utils.escape(newLine.content);
|
|
||||||
|
|
||||||
config.isCombined = file.isCombined;
|
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.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);
|
fileHtml.right += generateSingleLineHtml(newLine.type, newLine.newNumber, diff.second.line, diff.second.prefix);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue