Class: Dyph::TwoWayDiffers::HeckelDiffWrapper

Inherits:
Object
  • Object
show all
Defined in:
lib/dyph/two_way_differs/heckel_diff.rb

Defined Under Namespace

Classes: IndexTracker

Instance Method Summary collapse

Constructor Details

#initialize(old_text_array, new_text_array, heckel_diff) ⇒ HeckelDiffWrapper

Returns a new instance of HeckelDiffWrapper.



126
127
128
129
130
131
132
# File 'lib/dyph/two_way_differs/heckel_diff.rb', line 126

def initialize(old_text_array, new_text_array, heckel_diff)
  @chunks = heckel_diff.map { |block| TwoWayChunk.new(block) }
  @old_text_array = old_text_array
  @new_text_array = new_text_array
  @old_text = []
  @new_text = []
end

Instance Method Details

#convert_to_typed_ouputObject



135
136
137
138
139
140
141
142
143
144
# File 'lib/dyph/two_way_differs/heckel_diff.rb', line 135

def convert_to_typed_ouput()
  final_indexes = @chunks.reduce(IndexTracker.new(0,0)) do |index_tracker, chunk|
    old_iteration, new_iteration = set_text_node_indexes(chunk, index_tracker.old_index, index_tracker.new_index)
    old_index, new_index = append_changes(chunk, index_tracker.old_index + old_iteration, index_tracker.new_index + new_iteration)
    IndexTracker.new(old_index, new_index)
  end

  set_the_remaining_text_node_indexes(final_indexes.old_index, final_indexes.new_index)
  { old_text: @old_text, new_text: @new_text}
end