Skip to content

Commit a67e25c

Browse files
author
Uwe Hees
committed
Parse merge diffs.
These diffs begin with "diff --cc" and have "@@@" as block sepeartors.
1 parent 0924184 commit a67e25c

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

GLFileView.m

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -305,12 +305,12 @@ + (NSString *)parseDiff:(NSString *)txt
305305
NSScanner *scan=[NSScanner scannerWithString:txt];
306306
NSString *block;
307307

308-
if(![txt hasPrefix:@"diff --git"])
309-
[scan scanUpToString:@"diff --git" intoString:&block]; //move to first diff
308+
if(![txt hasPrefix:@"diff --"])
309+
[scan scanUpToString:@"diff --" intoString:&block]; //move to first diff
310310

311-
while([scan scanString:@"diff --git" intoString:NULL]){ // is a diff start?
312-
[scan scanUpToString:@"\ndiff --git" intoString:&block];
313-
[res appendString:[GLFileView parseDiffBlock:[NSString stringWithFormat:@"diff --git %@",block]]];
311+
while([scan scanString:@"diff --" intoString:NULL]){ // is a diff start?
312+
[scan scanUpToString:@"\ndiff --" intoString:&block];
313+
[res appendString:[GLFileView parseDiffBlock:[NSString stringWithFormat:@"diff --%@",block]]];
314314
}
315315

316316
return res;
@@ -322,7 +322,7 @@ + (NSString *)parseDiffBlock:(NSString *)txt
322322
NSScanner *scan=[NSScanner scannerWithString:txt];
323323
NSString *block;
324324

325-
[scan scanUpToString:@"\n@@ " intoString:&block];
325+
[scan scanUpToString:@"\n@@" intoString:&block];
326326
[res appendString:@"<table class='diff'><thead>"];
327327
[res appendString:[GLFileView parseDiffHeader:block]];
328328
[res appendString:@"</td></tr></thead><tbody>"];
@@ -331,9 +331,9 @@ + (NSString *)parseDiffBlock:(NSString *)txt
331331
[res appendString:[GLFileView parseBinaryDiff:block]];
332332
}
333333

334-
while([scan scanString:@"@@ " intoString:NULL]){
335-
[scan scanUpToString:@"\n@@ " intoString:&block];
336-
[res appendString:[GLFileView parseDiffChunk:[NSString stringWithFormat:@"@@ %@",block]]];
334+
while([scan scanString:@"@@" intoString:NULL]){
335+
[scan scanUpToString:@"\n@@" intoString:&block];
336+
[res appendString:[GLFileView parseDiffChunk:[NSString stringWithFormat:@"@@%@",block]]];
337337
}
338338

339339
[res appendString:@"</tbody></table>"];
@@ -433,11 +433,16 @@ + (NSString *)parseDiffHeader:(NSString *)txt
433433

434434
+(NSString *)getFileName:(NSString *)line
435435
{
436-
NSRange b = [line rangeOfString:@" b/"];
437-
NSString *file=[line substringFromIndex:b.location+3];
436+
NSRange b = [line rangeOfString:@"b/"];
437+
if (b.length == 0)
438+
b = [line rangeOfString:@"--cc "];
439+
440+
NSString *file=[line substringFromIndex:b.location+b.length];
441+
438442
DLog(@"line=%@",line);
439443
DLog(@"file=%@",file);
440-
return file;
444+
445+
return file;
441446
}
442447

443448
+(NSArray *)getFilesNames:(NSString *)line
@@ -492,17 +497,17 @@ +(BOOL)isImage:(NSString*)file
492497

493498
+(BOOL)isBinaryFile:(NSString *)line
494499
{
495-
return (([line length]>12) && [[line substringToIndex:12] isEqualToString:@"Binary files"]);
500+
return [line hasPrefix:@"Binary files"];
496501
}
497502

498503
+(BOOL)isStartDiff:(NSString *)line
499504
{
500-
return (([line length]>10) && [[line substringToIndex:10] isEqualToString:@"diff --git"]);
505+
return [line hasPrefix:@"diff --"];
501506
}
502507

503508
+(BOOL)isStartBlock:(NSString *)line
504509
{
505-
return (([line length]>3) && [[line substringToIndex:3] isEqualToString:@"@@ "]);
510+
return [line hasPrefix:@"@@"];
506511
}
507512

508513
- (NSString *) parseBlame:(NSString *)txt

0 commit comments

Comments
 (0)