Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
97.22% covered (success)
97.22%
35 / 36
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
ArrayDiffFormatter
100.00% covered (success)
100.00%
35 / 35
100.00% covered (success)
100.00%
1 / 1
9
100.00% covered (success)
100.00%
1 / 1
 format
100.00% covered (success)
100.00%
35 / 35
100.00% covered (success)
100.00%
1 / 1
9
1<?php
2/**
3 * Portions taken from phpwiki-1.3.3.
4 *
5 * Copyright © 2000, 2001 Geoffrey T. Dairiki <dairiki@dairiki.org>
6 * You may copy this code freely under the conditions of the GPL.
7 *
8 * @license GPL-2.0-or-later
9 * @file
10 * @ingroup DifferenceEngine
11 */
12
13namespace Wikimedia\Diff;
14
15/**
16 * A pseudo-formatter that just passes along the Diff::$edits array
17 * @newable
18 * @ingroup DifferenceEngine
19 */
20class ArrayDiffFormatter extends DiffFormatter {
21
22    /**
23     * @param Diff $diff A Diff object.
24     *
25     * @return array[] List of associative arrays, each describing a difference.
26     * @suppress PhanParamSignatureMismatch
27     */
28    public function format( $diff ) {
29        $oldline = 1;
30        $newline = 1;
31        $retval = [];
32        foreach ( $diff->getEdits() as $edit ) {
33            switch ( $edit->getType() ) {
34                case 'add':
35                    foreach ( $edit->getClosing() as $line ) {
36                        $retval[] = [
37                            'action' => 'add',
38                            'new' => $line,
39                            'newline' => $newline++
40                        ];
41                    }
42                    break;
43                case 'delete':
44                    foreach ( $edit->getOrig() as $line ) {
45                        $retval[] = [
46                            'action' => 'delete',
47                            'old' => $line,
48                            'oldline' => $oldline++,
49                        ];
50                    }
51                    break;
52                case 'change':
53                    foreach ( $edit->getOrig() as $key => $line ) {
54                        $retval[] = [
55                            'action' => 'change',
56                            'old' => $line,
57                            'new' => $edit->getClosing( $key ),
58                            'oldline' => $oldline++,
59                            'newline' => $newline++,
60                        ];
61                    }
62                    break;
63                case 'copy':
64                    $oldline += $edit->norig();
65                    $newline += $edit->norig();
66            }
67        }
68
69        return $retval;
70    }
71
72}
73
74/** @deprecated class alias since 1.41 */
75class_alias( ArrayDiffFormatter::class, 'ArrayDiffFormatter' );