Class: GitHelpers::GitDiffHighlight
Overview
stolen from diff-highlight git contrib script
Constant Summary
Constants inherited
from GitDiff
GitHelpers::GitDiff::NoNewLine
Instance Attribute Summary
Attributes inherited from GitDiff
#output
Instance Method Summary
collapse
Methods inherited from GitDiff
#change_mode, #detect_delete, #detect_diff_header, #detect_end_diff_header, #detect_end_hunk, #detect_filename, #detect_index, #detect_new_commit, #detect_new_diff_header, #detect_new_hunk, #detect_new_submodule_header, #detect_newfile, #detect_perm, #detect_rename_copy, #each, #end_commit, #end_diff_header, #end_meta, #end_submodule, #end_submodule_header, #get_file_name, #handle_commit, #handle_diff_header, #handle_hunk, #handle_meta, #handle_submodule, #handle_submodule_header, #initialize, #new_commit, #new_diff_header, #new_meta, #new_submodule, #new_submodule_header, #next_mode, output, #output_line, #output_lines, #parse, #parse_hunk_header, #parse_line, #prepare_new_line, #reparse, #submodule_line, #update_mode
Instance Method Details
#end_hunk ⇒ Object
426
427
428
429
|
# File 'lib/git_helpers/diff.rb', line 426
def end_hunk
super
show_hunk
end
|
#handle_line ⇒ Object
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
|
# File 'lib/git_helpers/diff.rb', line 464
def handle_line
if @mode == :hunk && @hunk[:n]==2
linemode=@line[0]
case linemode
when "-"
@accumulator[0] << @orig_line
when "+"
@accumulator[1] << @orig_line
else
show_hunk
@accumulator=[[],[]]
output_line @orig_line
end
else
output_line @orig_line
end
end
|
#highlight_pair(old, new) ⇒ Object
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
|
# File 'lib/git_helpers/diff.rb', line 431
def highlight_pair(old,new)
oldc=SimpleColor.color_entities(old).each_with_index
newc=SimpleColor.color_entities(new).each_with_index
seen_pm=false
loop do
a=oldc.grep {|c| ! SimpleColor.color?(c)}
b=newc.grep {|c| ! SimpleColor.color?(c)}
if !seen_pm and a=="-" and b=="+"
seen_pm=true
elsif a==b
else
last
end
end
end
|
#new_hunk ⇒ Object
422
423
424
425
|
# File 'lib/git_helpers/diff.rb', line 422
def new_hunk
super
@accumulator=[[],[]]
end
|
#show_hunk ⇒ Object
449
450
451
452
453
454
455
456
457
458
459
460
461
462
|
# File 'lib/git_helpers/diff.rb', line 449
def show_hunk
old,new=@accumulator
if old.length != new.length
output_lines(old+new)
else
newhunk=[]
(0...old.length).each do |i|
oldi,newi=highlight_pair(old[i],new[i])
output_line oldi
newhunk << newi
end
output_lines(newhunk)
end
end
|