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..718b4de3 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 { /** @@ -53,6 +51,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 +62,8 @@ public function render() $html .= ''; $html .= ''; $html .= ''; - $html .= ''; - $html .= ''; + $html .= ''; + $html .= ''; $html .= ''; $html .= ''; $html .= ''; @@ -128,8 +129,8 @@ public function render() foreach($change['changed']['lines'] as $no => $line) { $toLine = $change['changed']['offset'] + $no + 1; $html .= ''; - $html .= ''; $html .= ''; + $html .= ''; $html .= ''; $html .= ''; } 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 { /**
OldNew'.$title_a.''.$title_b.'Differences
'.$toLine.' '.$toLine.''.$line.'