diff --git a/code/Diff.php b/code/Diff.php
index a56acdac..fdaac4d3 100755
--- a/code/Diff.php
+++ b/code/Diff.php
@@ -693,11 +693,17 @@ class Diff
return $content;
}
- static function compareHTML($from, $to) {
+ /**
+ * @param String
+ * @param String
+ * @param Boolean
+ * @return String
+ */
+ static function compareHTML($from, $to, $escape = false) {
// First split up the content into words and tags
$set1 = self::getHTMLChunks($from);
$set2 = self::getHTMLChunks($to);
-
+
// Diff that
$diff = new Diff($set1, $set2);
@@ -755,22 +761,25 @@ class Diff
$diff = new Diff($rechunked[1], $rechunked[2]);
$content = '';
foreach($diff->edits as $edit) {
+ $orig = ($escape) ? Convert::raw2xml($edit->orig) : $edit->orig;
+ $final = ($escape) ? Convert::raw2xml($edit->final) : $edit->final;
+
switch($edit->type) {
case 'copy':
- $content .= " " . implode(" ", $edit->orig) . " ";
+ $content .= " " . implode(" ", $orig) . " ";
break;
case 'change':
- $content .= " " . implode(" ", $edit->final) . " ";
- $content .= " " . implode(" ", $edit->orig) . " ";
+ $content .= " " . implode(" ", $final) . " ";
+ $content .= " " . implode(" ", $orig) . " ";
break;
case 'add':
- $content .= " " . implode(" ", $edit->final) . " ";
+ $content .= " " . implode(" ", $final) . " ";
break;
case 'delete':
- $content .= " " . implode(" ", $edit->orig) . " ";
+ $content .= " " . implode(" ", $orig) . " ";
break;
}
}