class Trailblazer::Loader::Pipeline::Function::Insert

Public Instance Methods

call(arr, func, options) click to toggle source
# File lib/trailblazer/loader/pipeline.rb, line 45
def call(arr, func, options)
  arr = arr.dup
  delete!(arr, func) if options[:delete]
  replace!(arr, options[:replace], func) if options[:replace]
  arr
end

Private Instance Methods

delete!(arr, removed_func) click to toggle source
# File lib/trailblazer/loader/pipeline.rb, line 63
def delete!(arr, removed_func)
  arr.delete(removed_func)

  # TODO: make nice.
  arr.each_with_index { |func, index|
    if func.is_a?(Collect)
      arr[index] = Collect[*Pipeline::Insert.(func, removed_func, delete: true)]
    end
  }
end
replace!(arr, old_func, new_func) click to toggle source
# File lib/trailblazer/loader/pipeline.rb, line 53
def replace!(arr, old_func, new_func)
  arr.each_with_index { |func, index|
    if func.is_a?(Collect)
      arr[index] = Collect[*Pipeline::Insert.(func, new_func, replace: old_func)]
    end

    arr[index] = new_func if func==old_func
  }
end