From 6decbad617ea170e44801cbf8d8a7302dc84c595 Mon Sep 17 00:00:00 2001 From: Rafal Piton Date: Sat, 17 Mar 2012 17:48:48 +0100 Subject: [PATCH 1/4] Made lib "old" PSR-0 compliant and made render() method accept string render name instead of class. --- example/example.php | 28 ++++++++++++--------------- lib/{ => Diff}/Diff.php | 28 +++++++++++++++++++++++---- lib/Diff/Renderer/Html/Array.php | 2 -- lib/Diff/Renderer/Html/Inline.php | 2 -- lib/Diff/Renderer/Html/SideBySide.php | 2 -- lib/Diff/Renderer/Text/Context.php | 2 -- lib/Diff/Renderer/Text/Unified.php | 2 -- 7 files changed, 36 insertions(+), 30 deletions(-) rename lib/{ => Diff}/Diff.php (89%) diff --git a/example/example.php b/example/example.php index d9eedbb7..37cecc7a 100644 --- a/example/example.php +++ b/example/example.php @@ -11,9 +11,13 @@

Side by Side Diff

Render($renderer); + echo $diff->render('Html_SideBySide'); ?>

Inline Diff

render($renderer); + echo $diff->render('Html_Inline'); ?>

Unified Diff

render($renderer));
+		echo htmlspecialchars($diff->render('Text_Unified'));
 
 		?>
 		
@@ -62,9 +60,7 @@
render($renderer));
+		echo htmlspecialchars($diff->render('Text_Context'));
 		?>
 		
diff --git a/lib/Diff.php b/lib/Diff/Diff.php similarity index 89% rename from lib/Diff.php rename to lib/Diff/Diff.php index 2368e8bf..f8887d68 100644 --- a/lib/Diff.php +++ b/lib/Diff/Diff.php @@ -43,7 +43,7 @@ * @link http://github.com/chrisboulton/php-diff */ -class Diff +class Diff_Diff { /** * @var array The "old" sequence to use as the basis for the comparison. @@ -94,15 +94,36 @@ public function __construct($a, $b, $options=array()) /** * Render a diff using the supplied rendering class and return it. * - * @param object $renderer An instance of the rendering object to use for generating the diff. + * @param string|object $renderer An instance of the rendering object to use for generating the diff. * @return mixed The generated diff. Exact return value depends on the rendered. */ - public function render(Diff_Renderer_Abstract $renderer) + public function render($renderer) { + if (!is_object($renderer)) + { + $renderer = 'Diff_Renderer_' . $renderer; + $renderer = new $renderer(); + } + $renderer->diff = $this; return $renderer->render(); } + /** + * Render a diff using the named rendering class and return it. + * + * @param string $renderer An instance of the rendering object to use for generating the diff. + * @return mixed The generated diff. Exact return value depends on the rendered. + */ + public function renderText($renderer) + { + $renderer = 'Diff_Renderer_Text_' . $renderer; + $renderer = new $renderer(); + + $renderer->diff = $this; + return $renderer->render(); + } + /** * Get a range of lines from $start to $end from the first comparison string * and return them as an array. If no values are supplied, the entire string @@ -170,7 +191,6 @@ public function getGroupedOpcodes() return $this->groupedCodes; } - require_once dirname(__FILE__).'/Diff/SequenceMatcher.php'; $sequenceMatcher = new Diff_SequenceMatcher($this->a, $this->b, null, $this->options); $this->groupedCodes = $sequenceMatcher->getGroupedOpcodes($this->options['context']); return $this->groupedCodes; diff --git a/lib/Diff/Renderer/Html/Array.php b/lib/Diff/Renderer/Html/Array.php index 0b3f1d50..32949d79 100644 --- a/lib/Diff/Renderer/Html/Array.php +++ b/lib/Diff/Renderer/Html/Array.php @@ -40,8 +40,6 @@ * @link http://github.com/chrisboulton/php-diff */ -require_once dirname(__FILE__).'/../Abstract.php'; - class Diff_Renderer_Html_Array extends Diff_Renderer_Abstract { /** diff --git a/lib/Diff/Renderer/Html/Inline.php b/lib/Diff/Renderer/Html/Inline.php index 60e8005a..c3f5eeb6 100644 --- a/lib/Diff/Renderer/Html/Inline.php +++ b/lib/Diff/Renderer/Html/Inline.php @@ -40,8 +40,6 @@ * @link http://github.com/chrisboulton/php-diff */ -require_once dirname(__FILE__).'/Array.php'; - class Diff_Renderer_Html_Inline extends Diff_Renderer_Html_Array { /** diff --git a/lib/Diff/Renderer/Html/SideBySide.php b/lib/Diff/Renderer/Html/SideBySide.php index f5e1a579..ee8a4fb6 100644 --- a/lib/Diff/Renderer/Html/SideBySide.php +++ b/lib/Diff/Renderer/Html/SideBySide.php @@ -40,8 +40,6 @@ * @link http://github.com/chrisboulton/php-diff */ -require_once dirname(__FILE__).'/Array.php'; - class Diff_Renderer_Html_SideBySide extends Diff_Renderer_Html_Array { /** diff --git a/lib/Diff/Renderer/Text/Context.php b/lib/Diff/Renderer/Text/Context.php index 0f672f91..b9ccc137 100644 --- a/lib/Diff/Renderer/Text/Context.php +++ b/lib/Diff/Renderer/Text/Context.php @@ -40,8 +40,6 @@ * @link http://github.com/chrisboulton/php-diff */ -require_once dirname(__FILE__).'/../Abstract.php'; - class Diff_Renderer_Text_Context extends Diff_Renderer_Abstract { /** diff --git a/lib/Diff/Renderer/Text/Unified.php b/lib/Diff/Renderer/Text/Unified.php index e94d951d..8c4b13cf 100644 --- a/lib/Diff/Renderer/Text/Unified.php +++ b/lib/Diff/Renderer/Text/Unified.php @@ -40,8 +40,6 @@ * @link http://github.com/chrisboulton/php-diff */ -require_once dirname(__FILE__).'/../Abstract.php'; - class Diff_Renderer_Text_Unified extends Diff_Renderer_Abstract { /** From d19fc0cab5bab9177d1ad30cd0105d3c538bf50d Mon Sep 17 00:00:00 2001 From: jorrel Date: Mon, 19 Mar 2012 14:34:33 +0800 Subject: [PATCH 2/4] Line numbers for 'New' now appears under the appropriate column --- lib/Diff/Renderer/Html/Inline.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Diff/Renderer/Html/Inline.php b/lib/Diff/Renderer/Html/Inline.php index 60e8005a..70cc9041 100644 --- a/lib/Diff/Renderer/Html/Inline.php +++ b/lib/Diff/Renderer/Html/Inline.php @@ -128,8 +128,8 @@ public function render() foreach($change['changed']['lines'] as $no => $line) { $toLine = $change['changed']['offset'] + $no + 1; $html .= ''; - $html .= ''.$toLine.''; $html .= ' '; + $html .= ''.$toLine.''; $html .= ''.$line.''; $html .= ''; } From 4cdeb36b6c4cafa73bcf4226e2efc88202f57555 Mon Sep 17 00:00:00 2001 From: jorrel Date: Mon, 19 Mar 2012 14:38:24 +0800 Subject: [PATCH 3/4] Added support for custom titles for inline renderer --- lib/Diff/Renderer/Html/Inline.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/Diff/Renderer/Html/Inline.php b/lib/Diff/Renderer/Html/Inline.php index 70cc9041..b50e945f 100644 --- a/lib/Diff/Renderer/Html/Inline.php +++ b/lib/Diff/Renderer/Html/Inline.php @@ -53,6 +53,9 @@ class Diff_Renderer_Html_Inline extends Diff_Renderer_Html_Array public function render() { $changes = parent::render(); + $title_a = $this->diff->options['title_a']; + $title_b = $this->diff->options['title_b']; + $html = ''; if(empty($changes)) { return $html; @@ -61,8 +64,8 @@ public function render() $html .= ''; $html .= ''; $html .= ''; - $html .= ''; - $html .= ''; + $html .= ''; + $html .= ''; $html .= ''; $html .= ''; $html .= ''; From 2860b380baa91f342a3d6c809b740a384a073e04 Mon Sep 17 00:00:00 2001 From: Jorrel Ang Date: Mon, 19 Mar 2012 14:48:06 +0800 Subject: [PATCH 4/4] Merge branches 'rafalp' and 'master'
OldNew'.$title_a.''.$title_b.'Differences