Projekt

Obecné

Profil

Stáhnout (5.39 KB) Statistiky
| Větev: | Revize:
1
# sebastian/diff
2

    
3
Diff implementation for PHP, factored out of PHPUnit into a stand-alone component.
4

    
5
## Installation
6

    
7
You can add this library as a local, per-project dependency to your project using [Composer](https://getcomposer.org/):
8

    
9
    composer require sebastian/diff
10

    
11
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:
12

    
13
    composer require --dev sebastian/diff
14

    
15
### Usage
16

    
17
The `Differ` class can be used to generate a textual representation of the difference between two strings:
18

    
19
```php
20
use SebastianBergmann\Diff\Differ;
21

    
22
$differ = new Differ;
23
print $differ->diff('foo', 'bar');
24
```
25

    
26
The code above yields the output below:
27

    
28
    --- Original
29
    +++ New
30
    @@ @@
31
    -foo
32
    +bar
33

    
34
The `Parser` class can be used to parse a unified diff into an object graph:
35

    
36
```php
37
use SebastianBergmann\Diff\Parser;
38
use SebastianBergmann\Git;
39

    
40
$git = new Git('/usr/local/src/money');
41

    
42
$diff = $git->getDiff(
43
  '948a1a07768d8edd10dcefa8315c1cbeffb31833',
44
  'c07a373d2399f3e686234c4f7f088d635eb9641b'
45
);
46

    
47
$parser = new Parser;
48

    
49
print_r($parser->parse($diff));
50
```
51

    
52
The code above yields the output below:
53

    
54
    Array
55
    (
56
        [0] => SebastianBergmann\Diff\Diff Object
57
            (
58
                [from:SebastianBergmann\Diff\Diff:private] => a/tests/MoneyTest.php
59
                [to:SebastianBergmann\Diff\Diff:private] => b/tests/MoneyTest.php
60
                [chunks:SebastianBergmann\Diff\Diff:private] => Array
61
                    (
62
                        [0] => SebastianBergmann\Diff\Chunk Object
63
                            (
64
                                [start:SebastianBergmann\Diff\Chunk:private] => 87
65
                                [startRange:SebastianBergmann\Diff\Chunk:private] => 7
66
                                [end:SebastianBergmann\Diff\Chunk:private] => 87
67
                                [endRange:SebastianBergmann\Diff\Chunk:private] => 7
68
                                [lines:SebastianBergmann\Diff\Chunk:private] => Array
69
                                    (
70
                                        [0] => SebastianBergmann\Diff\Line Object
71
                                            (
72
                                                [type:SebastianBergmann\Diff\Line:private] => 3
73
                                                [content:SebastianBergmann\Diff\Line:private] =>      * @covers SebastianBergmann\Money\Money::add
74
                                            )
75

    
76
                                        [1] => SebastianBergmann\Diff\Line Object
77
                                            (
78
                                                [type:SebastianBergmann\Diff\Line:private] => 3
79
                                                [content:SebastianBergmann\Diff\Line:private] =>      * @covers SebastianBergmann\Money\Money::newMoney
80
                                            )
81

    
82
                                        [2] => SebastianBergmann\Diff\Line Object
83
                                            (
84
                                                [type:SebastianBergmann\Diff\Line:private] => 3
85
                                                [content:SebastianBergmann\Diff\Line:private] =>      */
86
                                            )
87

    
88
                                        [3] => SebastianBergmann\Diff\Line Object
89
                                            (
90
                                                [type:SebastianBergmann\Diff\Line:private] => 2
91
                                                [content:SebastianBergmann\Diff\Line:private] =>     public function testAnotherMoneyWithSameCurrencyObjectCanBeAdded()
92
                                            )
93

    
94
                                        [4] => SebastianBergmann\Diff\Line Object
95
                                            (
96
                                                [type:SebastianBergmann\Diff\Line:private] => 1
97
                                                [content:SebastianBergmann\Diff\Line:private] =>     public function testAnotherMoneyObjectWithSameCurrencyCanBeAdded()
98
                                            )
99

    
100
                                        [5] => SebastianBergmann\Diff\Line Object
101
                                            (
102
                                                [type:SebastianBergmann\Diff\Line:private] => 3
103
                                                [content:SebastianBergmann\Diff\Line:private] =>     {
104
                                            )
105

    
106
                                        [6] => SebastianBergmann\Diff\Line Object
107
                                            (
108
                                                [type:SebastianBergmann\Diff\Line:private] => 3
109
                                                [content:SebastianBergmann\Diff\Line:private] =>         $a = new Money(1, new Currency('EUR'));
110
                                            )
111

    
112
                                        [7] => SebastianBergmann\Diff\Line Object
113
                                            (
114
                                                [type:SebastianBergmann\Diff\Line:private] => 3
115
                                                [content:SebastianBergmann\Diff\Line:private] =>         $b = new Money(2, new Currency('EUR'));
116
                                            )
117

    
118
                                    )
119

    
120
                            )
121

    
122
                    )
123

    
124
            )
125

    
126
    )
(5-5/8)