@@ -119,41 +119,67 @@ private function checkIfDiffInOld(array $diff)
119
119
*
120
120
* @return string
121
121
*/
122
- private function getBuffer ($ diff , $ old , $ start , $ end )
122
+ private function getBuffer (array $ diff , array $ old , $ start , $ end )
123
123
{
124
- $ newChunk = true ;
125
- $ buffer = $ this ->header ;
124
+ $ buffer = $ this ->header ;
125
+
126
+ if (!isset ($ old [$ start ])) {
127
+ $ buffer = $ this ->getDiffBufferElementNew ($ diff , $ buffer , $ start );
128
+ ++$ start ;
129
+ }
130
+
126
131
for ($ i = $ start ; $ i < $ end ; $ i ++) {
127
132
if (isset ($ old [$ i ])) {
128
- $ buffer .= "\n" ;
129
- $ newChunk = true ;
130
- $ i = $ old [$ i ];
133
+ $ i = $ old [$ i ];
134
+ $ buffer = $ this ->getDiffBufferElementNew ($ diff , "\n" . $ buffer , $ i );
135
+ } else {
136
+ $ buffer = $ this ->getDiffBufferElement ($ diff , $ buffer , $ i );
131
137
}
132
- $ buffer = $ this ->getDiffBufferElement ($ diff , $ i , $ newChunk , $ buffer );
133
- $ newChunk = false ;
134
138
}
135
139
136
140
return $ buffer ;
137
141
}
138
142
139
- private function getDiffBufferElement ($ diff , $ i , $ newChunk , $ buffer )
143
+ /**
144
+ * Gets individual buffer element.
145
+ *
146
+ * @param array $diff
147
+ * @param string $buffer
148
+ * @param int $diffIndex
149
+ *
150
+ * @return string
151
+ */
152
+ private function getDiffBufferElement (array $ diff , $ buffer , $ diffIndex )
140
153
{
141
- if ($ newChunk ) {
142
- if ($ this ->showNonDiffLines === true ) {
143
- $ buffer .= "@@ @@ \n" ;
144
- }
145
- }
146
- if ($ diff [$ i ][1 ] === 1 /* ADDED */ ) {
147
- $ buffer .= '+ ' . $ diff [$ i ][0 ] . "\n" ;
148
- } elseif ($ diff [$ i ][1 ] === 2 /* REMOVED */ ) {
149
- $ buffer .= '- ' . $ diff [$ i ][0 ] . "\n" ;
154
+ if ($ diff [$ diffIndex ][1 ] === 1 /* ADDED */ ) {
155
+ $ buffer .= '+ ' . $ diff [$ diffIndex ][0 ] . "\n" ;
156
+ } elseif ($ diff [$ diffIndex ][1 ] === 2 /* REMOVED */ ) {
157
+ $ buffer .= '- ' . $ diff [$ diffIndex ][0 ] . "\n" ;
150
158
} elseif ($ this ->showNonDiffLines === true ) {
151
- $ buffer .= ' ' . $ diff [$ i ][0 ] . "\n" ;
159
+ $ buffer .= ' ' . $ diff [$ diffIndex ][0 ] . "\n" ;
152
160
}
153
161
154
162
return $ buffer ;
155
163
}
156
164
165
+ /**
166
+ * Gets individual buffer element with opening.
167
+ *
168
+ * @param array $diff
169
+ * @param string $buffer
170
+ * @param int $diffIndex
171
+ *
172
+ * @return string
173
+ */
174
+ private function getDiffBufferElementNew (array $ diff , $ buffer , $ diffIndex )
175
+ {
176
+ if ($ this ->showNonDiffLines === true ) {
177
+ $ buffer .= "@@ @@ \n" ;
178
+ }
179
+
180
+ return $ this ->getDiffBufferElement ($ diff , $ buffer , $ diffIndex );
181
+ }
182
+
157
183
/**
158
184
* Returns the diff between two arrays or strings as array.
159
185
*
0 commit comments