Skip to content

Commit 34af782

Browse files
Refactoring mutating operators
1 parent 6ceba1a commit 34af782

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

src/Differ/Differ.php

+19-14
Original file line numberDiff line numberDiff line change
@@ -32,30 +32,35 @@ function sortingFirstFile(mixed $tree1, mixed $tree2): mixed
3232
array_keys($tree1),
3333
function ($acc, $key) use ($tree1, $tree2) {
3434
if (!array_key_exists($key, $tree2)) {
35-
$diff = array_merge($acc, [$key => ['status' => 'remove']]);
3635
$innerContent = sortingFirstFile($tree1[$key], $tree1[$key]);
3736
$valueName = is_array($innerContent) ? 'children' : 'value';
38-
$diff[$key][$valueName] = $innerContent;
39-
return $diff;
37+
return array_merge($acc, [$key => ['status' => 'remove', $valueName => $innerContent]]);
4038
}
4139

4240
if ($tree1[$key] === $tree2[$key]) {
43-
$diff = array_merge($acc, [$key => ['status' => 'unchanged']]);
44-
$valueName = is_array(sortingFirstFile($tree1[$key], $tree1[$key])) ? 'children' : 'value';
45-
$diff[$key][$valueName] = sortingFirstFile($tree1[$key], $tree1[$key]);
46-
return $diff;
41+
$innerContent = sortingFirstFile($tree1[$key], $tree1[$key]);
42+
$valueName = is_array($innerContent) ? 'children' : 'value';
43+
return array_merge($acc, [$key => ['status' => 'unchanged', $valueName => $innerContent]]);
4744
}
4845

4946
if (is_array($tree1[$key]) && is_array($tree2[$key])) {
50-
$diff = array_merge($acc, [$key => ['status' => 'changed']]);
51-
$diff[$key]['children'] = sortingFirstFile($tree1[$key], $tree2[$key]);
47+
$innerContent = sortingFirstFile($tree1[$key], $tree2[$key]);
48+
return array_merge($acc, [$key => ['status' => 'changed', 'children' => $innerContent]]);
5249
} else {
53-
$diff = array_merge($acc, [$key => ['status' => 'remove']]);
54-
$diff[$key]['beforeValue'] = sortingFirstFile($tree1[$key], $tree1[$key]);
55-
$diff[$key]['afterValue'] = sortingFirstFile($tree2[$key], $tree2[$key]);
50+
$beforeValue = sortingFirstFile($tree1[$key], $tree1[$key]);
51+
$afterValue = sortingFirstFile($tree2[$key], $tree2[$key]);
52+
53+
return array_merge(
54+
$acc,
55+
[
56+
$key => [
57+
'status' => 'remove',
58+
'beforeValue' => $beforeValue,
59+
'afterValue' => $afterValue
60+
]
61+
]
62+
);
5663
}
57-
58-
return $diff;
5964
},
6065
[]
6166
);

0 commit comments

Comments
 (0)