Skip to content

Commit f494b3a

Browse files
DigiLiveJBlond
authored andcommitted
Add deprecation notice for missing method
If a used sub renderer, which extends the main renderer, a deprecation notice will be thrown when the sub renderer is missing method `generateLinesIgnore`.
1 parent 0849a1e commit f494b3a

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

lib/jblond/Diff/Renderer/MainRenderer.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,23 @@ public function renderOutput(array $changes, object $subRenderer)
6565
strlen($this->options['equalityMarkers'][1])
6666
);
6767

68+
$deprecationTriggered = false;
6869
foreach ($blocks as $change) {
70+
if (
71+
$subRenderer instanceof MainRenderer &&
72+
!method_exists($subRenderer, 'generateLinesIgnore') &&
73+
$change['tag'] == 'ignore'
74+
) {
75+
if (!$deprecationTriggered) {
76+
trigger_error(
77+
'The use of a subRenderer without method generateLinesIgnore() is deprecated!',
78+
E_USER_DEPRECATED
79+
);
80+
$deprecationTriggered = true;
81+
}
82+
$change['tag'] =
83+
(count($change['base']['lines']) > count($change['changed']['lines'])) ? 'delete' : 'insert';
84+
}
6985
$output .= $subRenderer->generateBlockHeader($change);
7086
switch ($change['tag']) {
7187
case 'equal':

0 commit comments

Comments
 (0)