class SuperDiff::TieredLinesElider::BuildPanes
Public Instance Methods
call()
click to toggle source
# File lib/super_diff/tiered_lines_elider.rb, line 287 def call beginning + middle + ending end
Private Instance Methods
beginning()
click to toggle source
# File lib/super_diff/tiered_lines_elider.rb, line 293 def beginning if ( dirty_panes.empty? || dirty_panes.first.range.begin == 0 ) [] else [ Pane.new( type: :clean, range: Range.new( 0, dirty_panes.first.range.begin - 1 ) ) ] end end
ending()
click to toggle source
# File lib/super_diff/tiered_lines_elider.rb, line 339 def ending if ( dirty_panes.empty? || dirty_panes.last.range.end >= lines.size - 1 ) [] else [ Pane.new( type: :clean, range: Range.new( dirty_panes.last.range.end + 1, lines.size - 1 ) ) ] end end
middle()
click to toggle source
# File lib/super_diff/tiered_lines_elider.rb, line 312 def middle if dirty_panes.size == 1 dirty_panes else dirty_panes. each_with_index. each_cons(2). reduce([]) do |panes, ((pane1, _), (pane2, index2))| panes + [ pane1, Pane.new( type: :clean, range: Range.new( pane1.range.end + 1, pane2.range.begin - 1, ) ) ] + ( index2 == dirty_panes.size - 1 ? [pane2] : [] ) end end end