forked from sebastianbergmann/diff
-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
d7e7810
commit 9fe9626
Showing
42 changed files
with
103 additions
and
293 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,195 +1,5 @@ | ||
# sebastian/diff | ||
# localheinz/diff | ||
|
||
Diff implementation for PHP, factored out of PHPUnit into a stand-alone component. | ||
This is a fork of [`sebastian/diff`](https://github.com/sebastianbergmann/diff) for use with [`localheinz/composer-normalize`](https://github.com/localheinz/composer-normalize), with permission from Sebastian Bergmann. | ||
|
||
## Installation | ||
|
||
You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/): | ||
|
||
composer require sebastian/diff | ||
|
||
If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency: | ||
|
||
composer require --dev sebastian/diff | ||
|
||
### Usage | ||
|
||
#### Generating diff | ||
|
||
The `Differ` class can be used to generate a textual representation of the difference between two strings: | ||
|
||
```php | ||
<?php | ||
use SebastianBergmann\Diff\Differ; | ||
|
||
$differ = new Differ; | ||
print $differ->diff('foo', 'bar'); | ||
``` | ||
|
||
The code above yields the output below: | ||
```diff | ||
--- Original | ||
+++ New | ||
@@ @@ | ||
-foo | ||
+bar | ||
``` | ||
|
||
There are three output builders available in this package: | ||
|
||
#### UnifiedDiffOutputBuilder | ||
|
||
This is default builder, which generates the output close to udiff and is used by PHPUnit. | ||
|
||
```php | ||
<?php | ||
|
||
use SebastianBergmann\Diff\Differ; | ||
use SebastianBergmann\Diff\Output\UnifiedDiffOutputBuilder; | ||
|
||
$builder = new UnifiedDiffOutputBuilder( | ||
"--- Original\n+++ New\n", // custom header | ||
false // do not add line numbers to the diff | ||
); | ||
|
||
$differ = new Differ($builder); | ||
print $differ->diff('foo', 'bar'); | ||
``` | ||
|
||
#### StrictUnifiedDiffOutputBuilder | ||
|
||
Generates (strict) Unified diff's (unidiffs) with hunks, | ||
similar to `diff -u` and compatible with `patch` and `git apply`. | ||
|
||
```php | ||
<?php | ||
|
||
use SebastianBergmann\Diff\Differ; | ||
use SebastianBergmann\Diff\Output\StrictUnifiedDiffOutputBuilder; | ||
|
||
$builder = new StrictUnifiedDiffOutputBuilder([ | ||
'collapseRanges' => true, // ranges of length one are rendered with the trailing `,1` | ||
'commonLineThreshold' => 6, // number of same lines before ending a new hunk and creating a new one (if needed) | ||
'contextLines' => 3, // like `diff: -u, -U NUM, --unified[=NUM]`, for patch/git apply compatibility best to keep at least @ 3 | ||
'fromFile' => null, | ||
'fromFileDate' => null, | ||
'toFile' => null, | ||
'toFileDate' => null, | ||
]); | ||
|
||
$differ = new Differ($builder); | ||
print $differ->diff('foo', 'bar'); | ||
``` | ||
|
||
#### DiffOnlyOutputBuilder | ||
|
||
Output only the lines that differ. | ||
|
||
```php | ||
<?php | ||
|
||
use SebastianBergmann\Diff\Differ; | ||
use SebastianBergmann\Diff\Output\DiffOnlyOutputBuilder; | ||
|
||
$builder = new DiffOnlyOutputBuilder( | ||
"--- Original\n+++ New\n" | ||
); | ||
|
||
$differ = new Differ($builder); | ||
print $differ->diff('foo', 'bar'); | ||
``` | ||
|
||
#### DiffOutputBuilderInterface | ||
|
||
You can pass any output builder to the `Differ` class as longs as it implements the `DiffOutputBuilderInterface`. | ||
|
||
#### Parsing diff | ||
|
||
The `Parser` class can be used to parse a unified diff into an object graph: | ||
|
||
```php | ||
use SebastianBergmann\Diff\Parser; | ||
use SebastianBergmann\Git; | ||
|
||
$git = new Git('/usr/local/src/money'); | ||
|
||
$diff = $git->getDiff( | ||
'948a1a07768d8edd10dcefa8315c1cbeffb31833', | ||
'c07a373d2399f3e686234c4f7f088d635eb9641b' | ||
); | ||
|
||
$parser = new Parser; | ||
|
||
print_r($parser->parse($diff)); | ||
``` | ||
|
||
The code above yields the output below: | ||
|
||
Array | ||
( | ||
[0] => SebastianBergmann\Diff\Diff Object | ||
( | ||
[from:SebastianBergmann\Diff\Diff:private] => a/tests/MoneyTest.php | ||
[to:SebastianBergmann\Diff\Diff:private] => b/tests/MoneyTest.php | ||
[chunks:SebastianBergmann\Diff\Diff:private] => Array | ||
( | ||
[0] => SebastianBergmann\Diff\Chunk Object | ||
( | ||
[start:SebastianBergmann\Diff\Chunk:private] => 87 | ||
[startRange:SebastianBergmann\Diff\Chunk:private] => 7 | ||
[end:SebastianBergmann\Diff\Chunk:private] => 87 | ||
[endRange:SebastianBergmann\Diff\Chunk:private] => 7 | ||
[lines:SebastianBergmann\Diff\Chunk:private] => Array | ||
( | ||
[0] => SebastianBergmann\Diff\Line Object | ||
( | ||
[type:SebastianBergmann\Diff\Line:private] => 3 | ||
[content:SebastianBergmann\Diff\Line:private] => * @covers SebastianBergmann\Money\Money::add | ||
) | ||
|
||
[1] => SebastianBergmann\Diff\Line Object | ||
( | ||
[type:SebastianBergmann\Diff\Line:private] => 3 | ||
[content:SebastianBergmann\Diff\Line:private] => * @covers SebastianBergmann\Money\Money::newMoney | ||
) | ||
|
||
[2] => SebastianBergmann\Diff\Line Object | ||
( | ||
[type:SebastianBergmann\Diff\Line:private] => 3 | ||
[content:SebastianBergmann\Diff\Line:private] => */ | ||
) | ||
|
||
[3] => SebastianBergmann\Diff\Line Object | ||
( | ||
[type:SebastianBergmann\Diff\Line:private] => 2 | ||
[content:SebastianBergmann\Diff\Line:private] => public function testAnotherMoneyWithSameCurrencyObjectCanBeAdded() | ||
) | ||
|
||
[4] => SebastianBergmann\Diff\Line Object | ||
( | ||
[type:SebastianBergmann\Diff\Line:private] => 1 | ||
[content:SebastianBergmann\Diff\Line:private] => public function testAnotherMoneyObjectWithSameCurrencyCanBeAdded() | ||
) | ||
|
||
[5] => SebastianBergmann\Diff\Line Object | ||
( | ||
[type:SebastianBergmann\Diff\Line:private] => 3 | ||
[content:SebastianBergmann\Diff\Line:private] => { | ||
) | ||
|
||
[6] => SebastianBergmann\Diff\Line Object | ||
( | ||
[type:SebastianBergmann\Diff\Line:private] => 3 | ||
[content:SebastianBergmann\Diff\Line:private] => $a = new Money(1, new Currency('EUR')); | ||
) | ||
|
||
[7] => SebastianBergmann\Diff\Line Object | ||
( | ||
[type:SebastianBergmann\Diff\Line:private] => 3 | ||
[content:SebastianBergmann\Diff\Line:private] => $b = new Money(2, new Currency('EUR')); | ||
) | ||
) | ||
) | ||
) | ||
) | ||
) | ||
Please use [`sebastian/diff`](https://github.com/sebastianbergmann/diff) instead. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.