@@ -226,19 +226,22 @@ + (NSString *) parseHTML:(NSString *)txt
226
226
+ (NSString *) parseDiff : (NSString *)txt
227
227
{
228
228
txt=[self parseHTML: txt];
229
-
229
+
230
230
NSArray *lines = [txt componentsSeparatedByString: @" \n " ];
231
231
NSString *line;
232
232
NSMutableString *res=[NSMutableString string ];
233
233
BOOL inDiff=FALSE ;
234
- int i=0 ;
235
- line=[lines objectAtIndex: i++];
236
- while (i<[lines count ]){
234
+ BOOL inBlock=FALSE ;
235
+
236
+ int l_int,l_line,l_end;
237
+ int r_int,r_line,r_end;
238
+ int i;
239
+ for (i=0 ; i<[lines count ]; i++) {
240
+ line=[lines objectAtIndex: i];
241
+
237
242
if ([GLFileView isStartBlock: line]){
238
-
239
- int l_int,l_line,l_end;
240
- int r_int,r_line,r_end;
241
-
243
+ [res appendString: @" </td></tr></thead><tbody>" ];
244
+ inDiff=FALSE ;
242
245
NSString *header=[line substringFromIndex: 3 ];
243
246
NSRange hr = NSMakeRange (0 , [header rangeOfString: @" @@" ].location );
244
247
header=[header substringWithRange: hr];
@@ -254,34 +257,27 @@ + (NSString *) parseDiff:(NSString *)txt
254
257
r_end=r_line+[[pos_r objectAtIndex: 1 ]integerValue];
255
258
256
259
[res appendString: [NSString stringWithFormat: @" <tr class='header'><td colspan='3'>%@ </td></tr>" ,line]];
257
-
258
- do {
259
- line=[lines objectAtIndex: i++];
260
- NSString *s=[line substringToIndex: 1 ];
261
-
262
- if ([s isEqualToString: @" " ]){
263
- [res appendString: [NSString stringWithFormat: @" <tr><td class='l'>%d </td><td class='r'>%d </td>" ,l_line++,r_line++]];
264
- }else if ([s isEqualToString: @" -" ]){
265
- [res appendString: [NSString stringWithFormat: @" <tr class='l'><td class='l'>%d </td><td class='r'></td>" ,l_line++]];
266
- }else if ([s isEqualToString: @" +" ]){
267
- [res appendString: [NSString stringWithFormat: @" <tr class='r'><td class='l'></td><td class='r'>%d </td>" ,r_line++]];
268
- }
269
- [res appendString: [NSString stringWithFormat: @" <td class='code'>%@ </td></tr>" ,line]];
270
- // NSLog(@"%@ %d(%d)-%d(%d)",s,l_line,(l_int+l_count),r_line,(r_int+r_count));
271
- }while ((l_line<l_end) || (r_line<r_end));
272
-
260
+ inBlock=TRUE ;
261
+ }else if (inBlock){
262
+ NSString *s=[line substringToIndex: 1 ];
263
+ if ([s isEqualToString: @" " ]){
264
+ [res appendString: [NSString stringWithFormat: @" <tr><td class='l'>%d </td><td class='r'>%d </td>" ,l_line++,r_line++]];
265
+ }else if ([s isEqualToString: @" -" ]){
266
+ [res appendString: [NSString stringWithFormat: @" <tr class='l'><td class='l'>%d </td><td class='r'></td>" ,l_line++]];
267
+ }else if ([s isEqualToString: @" +" ]){
268
+ [res appendString: [NSString stringWithFormat: @" <tr class='r'><td class='l'></td><td class='r'>%d </td>" ,r_line++]];
269
+ }
270
+ [res appendString: [NSString stringWithFormat: @" <td class='code'>%@ </td></tr>" ,[line substringFromIndex: 1 ]]];
271
+ if (!(l_line<l_end) && !(r_line<r_end))
272
+ inBlock=FALSE ;
273
273
}else if ([GLFileView isStartDiff: line]){
274
274
if (inDiff)
275
275
[res appendString: @" </tbody></table>" ];
276
276
inDiff=TRUE ;
277
277
[res appendString: @" <table class='diff'><thead><tr><td colspan='3'>" ];
278
- do {
279
- [res appendString: [NSString stringWithFormat: @" <p>%@ </p>" ,line]];
280
- line=[lines objectAtIndex: i++];
281
- }while (![GLFileView isStartBlock: line]);
282
- [res appendString: @" </td></tr></thead><tbody>" ];
283
- }else {
284
- line=[lines objectAtIndex: i++];
278
+ [res appendString: [NSString stringWithFormat: @" <p>%@ </p>" ,line]];
279
+ }else if (inDiff){
280
+ [res appendString: [NSString stringWithFormat: @" <p>%@ </p>" ,line]];
285
281
}
286
282
}
287
283
if (inDiff)
0 commit comments