Skip to content

Commit d36f441

Browse files
committed
Parse diff hunks from merge diffs, continued.
Show differences from all anecstors. Each ancestor is represented by a seperate line numer column.
1 parent 62b6dba commit d36f441

File tree

2 files changed

+36
-16
lines changed

2 files changed

+36
-16
lines changed

GLFileView.m

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ + (NSString *)parseDiffChunk:(NSString *)txt
376376
NSMutableString *res=[NSMutableString string];
377377

378378
NSString *line;
379-
int l_line;
379+
int l_line[32]; // FIXME: make dynamic
380380
int r_line;
381381

382382
line=[lines nextObject];
@@ -390,26 +390,46 @@ + (NSString *)parseDiffChunk:(NSString *)txt
390390
NSString *header=[line substringWithRange:hr];
391391

392392
NSArray *pos=[header componentsSeparatedByString:@" "];
393-
NSArray *pos_l=[[pos objectAtIndex:0] componentsSeparatedByString:@","];
394393
NSArray *pos_r=[[pos objectAtIndex:arity-1] componentsSeparatedByString:@","];
395394

396-
l_line=abs([[pos_l objectAtIndex:0]integerValue]);
395+
for(int i=0; i<arity-1; i++){
396+
NSArray *pos_l=[[pos objectAtIndex:i] componentsSeparatedByString:@","];
397+
l_line[i]=abs([[pos_l objectAtIndex:0]integerValue]);
398+
}
397399
r_line=[[pos_r objectAtIndex:0]integerValue];
398400

399-
[res appendString:[NSString stringWithFormat:@"<tr class='header'><td colspan='3'>%@</td></tr>",line]];
401+
[res appendString:[NSString stringWithFormat:@"<tr class='header'><td colspan='%d'>%@</td></tr>",arity+1,line]];
400402
while((line=[lines nextObject])){
401-
NSString *s=[line substringToIndex:1];
402-
if([s isEqualToString:@" "]){
403-
[res appendString:[NSString stringWithFormat:@"<tr><td class='l'>%d</td><td class='r'>%d</td>",l_line++,r_line++]];
404-
}else if([s isEqualToString:@"-"]){
405-
[res appendString:[NSString stringWithFormat:@"<tr class='l'><td class='l'>%d</td><td class='r'></td>",l_line++]];
406-
}else if([s isEqualToString:@"+"]){
407-
[res appendString:[NSString stringWithFormat:@"<tr class='r'><td class='l'></td><td class='r'>%d</td>",r_line++]];
408-
}
409-
if(![s isEqualToString:@"\\"]){
403+
NSString *prefix=[line substringToIndex:arity-1];
404+
if([prefix rangeOfString:@"-"].location != NSNotFound){
405+
[res appendString:@"<tr class='l'>"];
406+
for(int i=0; i<arity-1; i++){
407+
if([prefix characterAtIndex:i] == '-'){
408+
[res appendString:[NSString stringWithFormat:@"<td class='l'>%d</td>",l_line[i]++]];
409+
}else{
410+
[res appendString:@"<td class='l'></td>"];
411+
}
412+
}
413+
[res appendString:@"<td class='r'></td>"];
414+
}else if([prefix rangeOfString:@"+"].location != NSNotFound){
415+
[res appendString:@"<tr class='r'>"];
416+
for(int i=0; i<arity-1; i++){
417+
[res appendString:@"<td class='l'></td>"];
418+
}
419+
[res appendString:[NSString stringWithFormat:@"<td class='r'>%d</td>",r_line++]];
420+
}else{
421+
[res appendString:@"<tr>"];
422+
for(int i=0; i<arity-1; i++){
423+
[res appendString:[NSString stringWithFormat:@"<td class='l'>%d</td>",l_line[i]++]];
424+
}
425+
[res appendString:[NSString stringWithFormat:@"<td class='r'>%d</td>",r_line++]];
426+
}
427+
if(![prefix hasPrefix:@"\\"]){
410428
[res appendString:[NSString stringWithFormat:@"<td class='code'>%@</td></tr>",[line substringFromIndex:arity-1]]];
411429
}
412430
}
431+
DLog(@"-=%@=-",res);
432+
413433
return res;
414434
}
415435

@@ -420,7 +440,7 @@ + (NSString *)parseDiffHeader:(NSString *)txt
420440

421441
NSString *line=[lines nextObject];
422442
NSString *fileName=[self getFileName:line];
423-
[res appendString:[NSString stringWithFormat:@"<tr id='%@'><td colspan='3'><div style='float:left;'>",fileName]];
443+
[res appendString:[NSString stringWithFormat:@"<tr id='%@'><td colspan='33'><div style='float:left;'>",fileName]];
424444
do{
425445
[res appendString:[NSString stringWithFormat:@"<p>%@</p>",line]];
426446
}while((line=[lines nextObject]));

html/views/diff/diffWindow.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ table.diff tr.header td {
2424
padding: 5px;
2525
}
2626

27-
table.diff tr td.r {
28-
border-left: 1px solid #909090;
27+
table.diff tr td.l {
28+
border-right: 1px solid #909090;
2929
}
3030

3131
table.diff tr.r {

0 commit comments

Comments
 (0)