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; } }