Module: Trailblazer::Activity::DSL::Linear::Merge

Defined in:
lib/trailblazer/activity/dsl/linear/feature/merge.rb

Defined Under Namespace

Modules: DSL

Class Method Summary collapse

Class Method Details

.call(old_seq, new_seq, end_id: "End.success") ⇒ Object

Compile-time logic to merge two activities.



19
20
21
22
23
24
25
26
# File 'lib/trailblazer/activity/dsl/linear/feature/merge.rb', line 19

def self.call(old_seq, new_seq, end_id: "End.success") # DISCUSS: also Insert
  new_seq = strip_start_and_ends(new_seq, end_id: end_id)

  _seq = Adds.apply_adds(
    old_seq,
    new_seq.collect { |row| {insert: [Adds::Insert.method(:Prepend), end_id], row: row} }
  )
end

.strip_start_and_ends(seq, end_id:) ⇒ Object



28
29
30
31
32
# File 'lib/trailblazer/activity/dsl/linear/feature/merge.rb', line 28

def self.strip_start_and_ends(seq, end_id:)
  cut_off_index = end_id.nil? ? seq.size : Adds::Insert.find_index(seq, end_id) # find the "first" end.

  seq[1..cut_off_index - 1]
end