From 8eb153dc3b5c742bfffcced7c2224afb2dc02433 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Fri, 9 Sep 2011 16:39:05 +0200 Subject: [PATCH] ENHANCEMENT Optional HTML escaping in Diff::compareHTML() (tested implicitly in DataDifferencerTest for sapphire) (AIR-56) --- code/Diff.php | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) 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; } }