Class: SuperDiff::OperationalSequencers::Array::LcsCallbacks

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

Instance Method Summary collapse

Instance Method Details

#change(event) ⇒ Object



78
79
80
81
82
83
84
85
86
87
# File 'lib/super_diff/operational_sequencers/array.rb', line 78

def change(event)
  child_operations = sequence.call(event.old_element, event.new_element)

  if child_operations
    add_change_operation(event, child_operations)
  else
    add_delete_operation(event)
    add_insert_operation(event)
  end
end

#discard_a(event) ⇒ Object



56
57
58
59
60
61
62
63
64
65
# File 'lib/super_diff/operational_sequencers/array.rb', line 56

def discard_a(event)
  operations << ::SuperDiff::Operations::UnaryOperation.new(
    name: :delete,
    collection: expected,
    key: event.old_position,
    value: event.old_element,
    index: event.old_position,
    index_in_collection: expected.index(event.old_element),
  )
end

#discard_b(event) ⇒ Object



67
68
69
70
71
72
73
74
75
76
# File 'lib/super_diff/operational_sequencers/array.rb', line 67

def discard_b(event)
  operations << ::SuperDiff::Operations::UnaryOperation.new(
    name: :insert,
    collection: actual,
    key: event.new_position,
    value: event.new_element,
    index: event.new_position,
    index_in_collection: actual.index(event.new_element),
  )
end

#match(event) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'lib/super_diff/operational_sequencers/array.rb', line 45

def match(event)
  operations << ::SuperDiff::Operations::UnaryOperation.new(
    name: :noop,
    collection: actual,
    key: event.new_position,
    value: event.new_element,
    index: event.new_position,
    index_in_collection: actual.index(event.new_element),
  )
end