Module: Trailblazer::Activity::DSL::Linear::Insert
- Defined in:
- lib/trailblazer/activity/dsl/linear.rb
Overview
Sequence Functions to mutate the Sequence by inserting, replacing, or deleting tasks. These functions are called in insert_task
Class Method Summary collapse
-
.Append(sequence, new_rows, insert_id) ⇒ Object
Append new_row after insert_id.
- .Delete(sequence, _, insert_id) ⇒ Object
- .find(sequence, insert_id) ⇒ Object
- .find_index(sequence, insert_id) ⇒ Object
-
.Prepend(sequence, new_rows, insert_id) ⇒ Object
Insert new_rows before insert_id.
- .Replace(sequence, new_rows, insert_id) ⇒ Object
Class Method Details
.Append(sequence, new_rows, insert_id) ⇒ Object
Append new_row after insert_id.
81 82 83 84 85 |
# File 'lib/trailblazer/activity/dsl/linear.rb', line 81 def Append(sequence, new_rows, insert_id) index, sequence = find(sequence, insert_id) sequence.insert(index+1, *new_rows) end |
.Delete(sequence, _, insert_id) ⇒ Object
101 102 103 104 105 106 |
# File 'lib/trailblazer/activity/dsl/linear.rb', line 101 def Delete(sequence, _, insert_id) index, sequence = find(sequence, insert_id) sequence.delete(sequence[index]) sequence end |
.find(sequence, insert_id) ⇒ Object
113 114 115 116 117 |
# File 'lib/trailblazer/activity/dsl/linear.rb', line 113 def find(sequence, insert_id) index = find_index(sequence, insert_id) or raise Sequence::IndexError.new(insert_id.inspect) return index, sequence.clone # Ruby doesn't have an easy way to avoid mutating arrays :( end |
.find_index(sequence, insert_id) ⇒ Object
109 110 111 |
# File 'lib/trailblazer/activity/dsl/linear.rb', line 109 def find_index(sequence, insert_id) sequence.find_index { |seq_row| seq_row[3][:id] == insert_id } # TODO: optimize id location! end |
.Prepend(sequence, new_rows, insert_id) ⇒ Object
Insert new_rows before insert_id.
88 89 90 91 92 |
# File 'lib/trailblazer/activity/dsl/linear.rb', line 88 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) ⇒ Object
94 95 96 97 98 99 |
# File 'lib/trailblazer/activity/dsl/linear.rb', line 94 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 |