diff --git a/README.md b/README.md
index 94c5a93..0026ade 100644
--- a/README.md
+++ b/README.md
@@ -4,8 +4,8 @@ PHP_Exporter
[](https://travis-ci.org/whatthejeff/php-exporter)
[PHPUnit](https://github.com/sebastianbergmann/phpunit/) includes a nifty
-utility for visualizing and diffing PHP data types. PHP_Exporter
-is simply a stand-alone version of that utility.
+utility for visualizing PHP data types. PHP_Exporter is simply a stand-alone
+version of that utility.
## Usage
@@ -13,7 +13,7 @@ Exporting:
```php
''
- 'string' => ''
- 'code' => 0
- 'file' => '/home/whatthejeff/test.php'
-- 'line' => 34
-+ 'line' => 35
- 'trace' => Array &0 ()
- 'previous' => null
- )
-*/
-
-$exporter = new Exporter(new Exception);
-print $exporter->diff(new Exception);
-
-```
-
## Data Types
Exporting simple types:
```php
PHP_Exporter
pear.phpunit.de
- A nifty utility for visualizing and diffing PHP variables.
- A nifty utility for visualizing and diffing PHP variables.
+ A nifty utility for visualizing PHP variables.
+ A nifty utility for visualizing PHP variables.
Jeff Welch
whatthejeff
@@ -35,7 +35,6 @@
-
diff --git a/composer.json b/composer.json
index a4179f2..7cc01a4 100644
--- a/composer.json
+++ b/composer.json
@@ -1,7 +1,7 @@
{
"name": "whatthejeff/php-exporter",
- "description": "A nifty utility for visualizing and diffing PHP data types",
- "keywords": ["exporter","export","diff"],
+ "description": "A nifty utility for visualizing PHP data types",
+ "keywords": ["exporter","export"],
"homepage": "http://www.github.com/whatthejeff/php-exporter",
"license": "BSD-3-Clause",
"authors": [
diff --git a/src/Diff.php b/src/Diff.php
deleted file mode 100644
index 19782a0..0000000
--- a/src/Diff.php
+++ /dev/null
@@ -1,325 +0,0 @@
-.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * * Neither the name of Sebastian Bergmann nor the names of his
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package PHP_Exporter
- * @author Sebastian Bergmann
- * @author Kore Nordmann
- * @copyright 2001-2013 Sebastian Bergmann
- * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
- * @link http://www.github.com/whatthejeff/php-exporter
- */
-
-namespace Whatthejeff\PHP\Exporter;
-
-/**
- * Diff implementation.
- *
- * @package PHP_Exporter
- * @author Sebastian Bergmann
- * @author Kore Nordmann
- * @copyright 2001-2013 Sebastian Bergmann
- * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
- * @link http://www.github.com/whatthejeff/php-exporter
- */
-class Diff
-{
- /**
- * The original string
- *
- * @var string
- */
- private $from;
-
- /**
- * The new string
- *
- * @var string
- */
- private $to;
-
- /**
- * The diff header
- *
- * @var string
- */
- private $header = "--- Original\n+++ New\n";
-
- /**
- * Constructs a new diff for two given strings
- *
- * @param mixed $from The original string
- * @param mixed $to The new string
- * @param mixed $header The diff header
- */
- public function __construct($from, $to, $header = '')
- {
- $this->from = $from;
- $this->to = $to;
-
- if ($header) {
- $this->header = $header;
- }
- }
-
- /**
- * Exports a value into a string.
- *
- * @return string
- * @see PHP_Exporter\Diff::diff
- */
- public function __toString()
- {
- return $this->diff();
- }
-
- /**
- * Returns the diff between two strings as a string.
- *
- * @return string
- */
- public function diff()
- {
- if ($this->from === $this->to) {
- return '';
- }
-
- $buffer = $this->header;
- $diff = $this->toArray();
-
- $inOld = FALSE;
- $i = 0;
- $old = array();
-
- foreach ($diff as $line) {
- if ($line[1] === 0 /* OLD */) {
- if ($inOld === FALSE) {
- $inOld = $i;
- }
- }
-
- else if ($inOld !== FALSE) {
- if (($i - $inOld) > 5) {
- $old[$inOld] = $i - 1;
- }
-
- $inOld = FALSE;
- }
-
- ++$i;
- }
-
- $start = isset($old[0]) ? $old[0] : 0;
- $end = count($diff);
-
- if ($tmp = array_search($end, $old)) {
- $end = $tmp;
- }
-
- $newChunk = TRUE;
-
- for ($i = $start; $i < $end; $i++) {
- if (isset($old[$i])) {
- $buffer .= "\n";
- $newChunk = TRUE;
- $i = $old[$i];
- }
-
- if ($newChunk) {
- $buffer .= "@@ @@\n";
- $newChunk = FALSE;
- }
-
- if ($diff[$i][1] === 1 /* ADDED */) {
- $buffer .= '+' . $diff[$i][0] . "\n";
- }
-
- else if ($diff[$i][1] === 2 /* REMOVED */) {
- $buffer .= '-' . $diff[$i][0] . "\n";
- }
-
- else {
- $buffer .= ' ' . $diff[$i][0] . "\n";
- }
- }
-
- return $buffer;
- }
-
- /**
- * Returns the diff between two strings as an array.
- *
- * every array-entry containts two elements:
- * - [0] => string $token
- * - [1] => 2|1|0
- *
- * - 2: REMOVED: $token was removed from $from
- * - 1: ADDED: $token was added to $from
- * - 0: OLD: $token is not changed in $to
- *
- * @return array
- */
- public function toArray()
- {
- if ($this->from === $this->to) {
- return array();
- }
-
- $from = preg_split('(\r\n|\r|\n)', $this->from);
- $to = preg_split('(\r\n|\r|\n)', $this->to);
-
- $start = array();
- $end = array();
- $fromLength = count($from);
- $toLength = count($to);
- $length = min($fromLength, $toLength);
-
- for ($i = 0; $i < $length; ++$i) {
- if ($from[$i] === $to[$i]) {
- $start[] = $from[$i];
- unset($from[$i], $to[$i]);
- } else {
- break;
- }
- }
-
- $length -= $i;
-
- for ($i = 1; $i < $length; ++$i) {
- if ($from[$fromLength - $i] === $to[$toLength - $i]) {
- array_unshift($end, $from[$fromLength - $i]);
- unset($from[$fromLength - $i], $to[$toLength - $i]);
- } else {
- break;
- }
- }
-
- $common = self::longestCommonSubsequence(
- array_values($from), array_values($to)
- );
-
- $diff = array();
-
- foreach ($start as $token) {
- $diff[] = array($token, 0 /* OLD */);
- }
-
- reset($from);
- reset($to);
-
- foreach ($common as $token) {
- while ((($fromToken = reset($from)) !== $token)) {
- $diff[] = array(array_shift($from), 2 /* REMOVED */);
- }
-
- while ((($toToken = reset($to)) !== $token)) {
- $diff[] = array(array_shift($to), 1 /* ADDED */);
- }
-
- $diff[] = array($token, 0 /* OLD */);
-
- array_shift($from);
- array_shift($to);
- }
-
- while (($token = array_shift($from)) !== NULL) {
- $diff[] = array($token, 2 /* REMOVED */);
- }
-
- while (($token = array_shift($to)) !== NULL) {
- $diff[] = array($token, 1 /* ADDED */);
- }
-
- foreach ($end as $token) {
- $diff[] = array($token, 0 /* OLD */);
- }
-
- return $diff;
- }
-
- /**
- * Calculates the longest common subsequence of two arrays.
- *
- * @param array $from
- * @param array $to
- * @return array
- */
- protected static function longestCommonSubsequence(array $from, array $to)
- {
- $common = array();
- $matrix = array();
- $fromLength = count($from);
- $toLength = count($to);
-
- for ($i = 0; $i <= $fromLength; ++$i) {
- $matrix[$i][0] = 0;
- }
-
- for ($j = 0; $j <= $toLength; ++$j) {
- $matrix[0][$j] = 0;
- }
-
- for ($i = 1; $i <= $fromLength; ++$i) {
- for ($j = 1; $j <= $toLength; ++$j) {
- $matrix[$i][$j] = max(
- $matrix[$i-1][$j],
- $matrix[$i][$j-1],
- $from[$i-1] === $to[$j-1] ? $matrix[$i-1][$j-1] + 1 : 0
- );
- }
- }
-
- $i = $fromLength;
- $j = $toLength;
-
- while ($i > 0 && $j > 0) {
- if ($from[$i-1] === $to[$j-1]) {
- array_unshift($common, $from[$i-1]);
- --$i;
- --$j;
- }
-
- else if ($matrix[$i][$j-1] > $matrix[$i-1][$j]) {
- --$j;
- }
-
- else {
- --$i;
- }
- }
-
- return $common;
- }
-}
diff --git a/src/Exporter.php b/src/Exporter.php
index 9a64aea..81f2d2b 100644
--- a/src/Exporter.php
+++ b/src/Exporter.php
@@ -44,7 +44,7 @@
namespace Whatthejeff\PHP\Exporter;
/**
- * A nifty utility for visualizing and diffing PHP data types.
+ * A nifty utility for visualizing PHP data types.
*
*
* export();
* echo $exporter;
- *
- * // Basic diff
- * echo $exporter->diff(new Exception);
*
*
* @package PHP_Exporter
@@ -273,18 +270,6 @@ class Exporter
return $this->export();
}
- /**
- * Gets a diff of the current value and a given value.
- *
- * @param mixed $value The value to diff with the current value
- * @param mixed $header The diff header
- * @return PHP_Exporter\Diff
- */
- public function diff($value, $header = '')
- {
- return new Diff((string)$this, (string)new self($value), $header);
- }
-
/**
* Converts an object to an array containing all of its private, protected
* and public properties.
diff --git a/src/autoload.php b/src/autoload.php
index 6c1583e..2590fbd 100644
--- a/src/autoload.php
+++ b/src/autoload.php
@@ -8,7 +8,6 @@ spl_autoload_register(
if ($classes === null) {
$classes = array(
'whatthejeff\\php\\exporter\\context' => '/Context.php',
- 'whatthejeff\\php\\exporter\\diff' => '/Diff.php',
'whatthejeff\\php\\exporter\\exception' => '/Exception.php',
'whatthejeff\\php\\exporter\\exporter' => '/Exporter.php'
);
diff --git a/tests/DiffTest.php b/tests/DiffTest.php
deleted file mode 100644
index 7e6cc7f..0000000
--- a/tests/DiffTest.php
+++ /dev/null
@@ -1,277 +0,0 @@
-.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * * Neither the name of Sebastian Bergmann nor the names of his
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
- * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- *
- * @package PHP_Exporter
- * @author Sebastian Bergmann
- * @copyright 2001-2013 Sebastian Bergmann
- * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
- * @link http://www.github.com/whatthejeff/php-exporter
- */
-
-namespace Whatthejeff\PHP\Exporter;
-
-/**
- *
- *
- * @package PHPUnit
- * @author Sebastian Bergmann
- * @copyright 2001-2013 Sebastian Bergmann
- * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
- * @link http://www.github.com/whatthejeff/php-exporter
- */
-class DiffTest extends \PHPUnit_Framework_TestCase
-{
- const REMOVED = 2;
- const ADDED = 1;
- const OLD = 0;
-
- /**
- * @covers PHP_Exporter\Diff::diff
- */
- public function testComparisonErrorMessage()
- {
- $this->assertEquals(
- "--- Original\n+++ New\n@@ @@\n-a\n+b\n",
- new Diff('a', 'b')
- );
- }
-
- /**
- * @covers PHP_Exporter\Diff::toArray
- */
- public function testComparisonErrorMessage_toArray()
- {
- $expected = array();
- $expected[] = array('a', self::REMOVED);
- $expected[] = array('b', self::ADDED);
-
- $diff = new Diff('a', 'b');
- $this->assertEquals($expected, $diff->toArray());
- }
-
- /**
- * @covers PHP_Exporter\Diff::diff
- */
- public function testComparisonErrorStartSame()
- {
- $this->assertEquals(
- "--- Original\n+++ New\n@@ @@\n-ba\n+bc\n",
- new Diff('ba', 'bc')
- );
- }
-
- /**
- * @covers PHP_Exporter\Diff::toArray
- */
- public function testComparisonErrorStartSame_toArray()
- {
- $expected = array();
- $expected[] = array('ba', self::REMOVED);
- $expected[] = array('bc', self::ADDED);
-
- $diff = new Diff('ba', 'bc');
- $this->assertEquals($expected, $diff->toArray());
- }
-
- /**
- * @covers PHP_Exporter\Diff::diff
- */
- public function testComparisonErrorEndSame()
- {
- $this->assertEquals(
- "--- Original\n+++ New\n@@ @@\n-ab\n+cb\n",
- new Diff('ab', 'cb')
- );
- }
-
- /**
- * @covers PHP_Exporter\Diff::toArray
- */
- public function testComparisonErrorEndSame_toArray()
- {
- $expected = array();
- $expected[] = array('ab', self::REMOVED);
- $expected[] = array('cb', self::ADDED);
-
- $diff = new Diff('ab', 'cb');
- $this->assertEquals($expected, $diff->toArray());
- }
-
- /**
- * @covers PHP_Exporter\Diff::diff
- */
- public function testComparisonErrorStartAndEndSame()
- {
- $this->assertEquals(
- "--- Original\n+++ New\n@@ @@\n-abc\n+adc\n",
- new Diff('abc', 'adc')
- );
- }
-
- /**
- * @covers PHP_Exporter\Diff::toArray
- */
- public function testComparisonErrorStartAndEndSame_toArray()
- {
- $expected = array();
- $expected[] = array('abc', self::REMOVED);
- $expected[] = array('adc', self::ADDED);
-
- $diff = new Diff('abc', 'adc');
- $this->assertEquals($expected, $diff->toArray());
- }
-
- /**
- * @covers PHP_Exporter\Diff::diff
- */
- public function testComparisonErrorStartSameComplete()
- {
- $this->assertEquals(
- "--- Original\n+++ New\n@@ @@\n-ab\n+abc\n",
- new Diff('ab', 'abc')
- );
- }
-
- /**
- * @covers PHP_Exporter\Diff::toArray
- */
- public function testComparisonErrorStartSameComplete_toArray()
- {
- $expected = array();
- $expected[] = array('ab', self::REMOVED);
- $expected[] = array('abc', self::ADDED);
-
- $diff = new Diff('ab', 'abc');
- $this->assertEquals($expected, $diff->toArray());
- }
-
- /**
- * @covers PHP_Exporter\Diff::diff
- */
- public function testComparisonErrorEndSameComplete()
- {
- $this->assertEquals(
- "--- Original\n+++ New\n@@ @@\n-bc\n+abc\n",
- new Diff('bc', 'abc')
- );
- }
-
- /**
- * @covers PHP_Exporter\Diff::toArray
- */
- public function testComparisonErrorEndSameComplete_toArray()
- {
- $expected = array();
- $expected[] = array('bc', self::REMOVED);
- $expected[] = array('abc', self::ADDED);
-
- $diff = new Diff('bc', 'abc');
- $this->assertEquals($expected, $diff->toArray());
- }
-
- /**
- * @covers PHP_Exporter\Diff::diff
- */
- public function testComparisonErrorOverlapingMatches()
- {
- $this->assertEquals(
- "--- Original\n+++ New\n@@ @@\n-abc\n+abbc\n",
- new Diff('abc', 'abbc')
- );
- }
-
- /**
- * @covers PHP_Exporter\Diff::toArray
- */
- public function testComparisonErrorOverlapingMatches_toArray()
- {
- $expected = array();
- $expected[] = array('abc', self::REMOVED);
- $expected[] = array('abbc', self::ADDED);
-
- $diff = new Diff('abc', 'abbc');
- $this->assertEquals($expected, $diff->toArray());
- }
-
- /**
- * @covers PHP_Exporter\Diff::diff
- */
- public function testComparisonErrorOverlapingMatches2()
- {
- $this->assertEquals(
- "--- Original\n+++ New\n@@ @@\n-abcdde\n+abcde\n",
- new Diff('abcdde', 'abcde')
- );
- }
-
- /**
- * @covers PHP_Exporter\Diff::toArray
- */
- public function testComparisonErrorOverlapingMatches2_toArray()
- {
- $expected = array();
- $expected[] = array('abcdde', self::REMOVED);
- $expected[] = array('abcde', self::ADDED);
-
- $diff = new Diff('abcdde', 'abcde');
- $this->assertEquals($expected, $diff->toArray());
- }
-
- /**
- * @covers PHP_Exporter\Diff::diff
- */
- public function testEmptyDiff()
- {
- $this->assertEquals('', new Diff('abc', 'abc'));
- }
-
- /**
- * @covers PHP_Exporter\Diff::toArray
- */
- public function testEmptyDiff_toArray()
- {
- $diff = new Diff('abc', 'abc');
- $this->assertEquals(array(), $diff->toArray());
- }
-
- public function testCustomHeader()
- {
- $this->assertEquals(
- "CUSTOM HEADER@@ @@\n-a\n+b\n",
- new Diff('a', 'b', 'CUSTOM HEADER')
- );
- }
-}