class SuperDiff::TieredLinesElider::BuildBoxes
Attributes
final_boxes[R]
lines[R]
open_collection_boxes[R]
Public Class Methods
call(lines)
click to toggle source
# File lib/super_diff/tiered_lines_elider.rb, line 386 def self.call(lines) builder = new(lines) builder.build builder.final_boxes end
new(lines)
click to toggle source
# File lib/super_diff/tiered_lines_elider.rb, line 394 def initialize(lines) @lines = lines @open_collection_boxes = [] @final_boxes = [] end
Public Instance Methods
build()
click to toggle source
# File lib/super_diff/tiered_lines_elider.rb, line 401 def build lines.each_with_index do |line, index| if line.opens_collection? open_new_collection_box(line, index) elsif line.closes_collection? extend_working_collection_box(index) close_working_collection_box else extend_working_collection_box(index) if open_collection_boxes.any? record_item_box(line, index) end end end
Private Instance Methods
close_working_collection_box()
click to toggle source
# File lib/super_diff/tiered_lines_elider.rb, line 423 def close_working_collection_box final_boxes << open_collection_boxes.pop end
extend_working_collection_box(index)
click to toggle source
# File lib/super_diff/tiered_lines_elider.rb, line 419 def extend_working_collection_box(index) open_collection_boxes.last.extend_to(index) end
open_new_collection_box(line, index)
click to toggle source
# File lib/super_diff/tiered_lines_elider.rb, line 427 def open_new_collection_box(line, index) open_collection_boxes << Box.new( indentation_level: line.indentation_level, range: index..index, ) end
record_item_box(line, index)
click to toggle source
# File lib/super_diff/tiered_lines_elider.rb, line 434 def record_item_box(line, index) final_boxes << Box.new( indentation_level: line.indentation_level, range: index..index, ) end