module Trailblazer::Activity::DSL::Linear::Insert
Sequence
Functions to mutate the Sequence
by inserting, replacing, or deleting tasks. These functions are called in {insert_task}
Public Instance Methods
Append(sequence, new_rows, insert_id)
click to toggle source
Append
{new_row} after {insert_id}.
# File lib/trailblazer/activity/dsl/linear.rb, line 113 def Append(sequence, new_rows, insert_id) index, sequence = find(sequence, insert_id) sequence.insert(index+1, *new_rows) end
Delete(sequence, _, insert_id)
click to toggle source
# File lib/trailblazer/activity/dsl/linear.rb, line 133 def Delete(sequence, _, insert_id) index, sequence = find(sequence, insert_id) sequence.delete(sequence[index]) sequence end
Prepend(sequence, new_rows, insert_id)
click to toggle source
Insert
{new_rows} before {insert_id}.
# File lib/trailblazer/activity/dsl/linear.rb, line 120 def Prepend(sequence, new_rows, insert_id) index, sequence = find(sequence, insert_id) sequence.insert(index, *new_rows) end
Replace(sequence, new_rows, insert_id)
click to toggle source
# File lib/trailblazer/activity/dsl/linear.rb, line 126 def Replace(sequence, new_rows, insert_id) index, sequence = find(sequence, insert_id) sequence[index], _ = *new_rows # TODO: replace and insert remaining, if any. sequence end
find(sequence, insert_id)
click to toggle source
# File lib/trailblazer/activity/dsl/linear.rb, line 145 def find(sequence, insert_id) index = find_index(sequence, insert_id) or raise Sequence::IndexError.new(sequence, insert_id) return index, sequence.clone # Ruby doesn't have an easy way to avoid mutating arrays :( end
find_index(sequence, insert_id)
click to toggle source
@private
# File lib/trailblazer/activity/dsl/linear.rb, line 141 def find_index(sequence, insert_id) sequence.find_index { |seq_row| seq_row[3][:id] == insert_id } # TODO: optimize id location! end