Class: SuperDiff::TieredLinesElider::BuildBoxes

Inherits:
Object
  • Object
show all
Defined in:
lib/super_diff/tiered_lines_elider.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(lines) ⇒ BuildBoxes

Returns a new instance of BuildBoxes.



394
395
396
397
398
399
# File 'lib/super_diff/tiered_lines_elider.rb', line 394

def initialize(lines)
  @lines = lines

  @open_collection_boxes = []
  @final_boxes = []
end

Instance Attribute Details

#final_boxesObject (readonly)

Returns the value of attribute final_boxes.



392
393
394
# File 'lib/super_diff/tiered_lines_elider.rb', line 392

def final_boxes
  @final_boxes
end

Class Method Details

.call(lines) ⇒ Object



386
387
388
389
390
# File 'lib/super_diff/tiered_lines_elider.rb', line 386

def self.call(lines)
  builder = new(lines)
  builder.build
  builder.final_boxes
end

Instance Method Details

#buildObject



401
402
403
404
405
406
407
408
409
410
411
412
413
# 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