class Pipetree::Function::Insert

Constants

Operations

Public Instance Methods

call(arr, operation, *args) click to toggle source

DISCUSS: all methods write to original array.

# File lib/pipetree/insert.rb, line 6
def call(arr, operation, *args)
  # arr = arr.dup
  raise "[Pipetree] Unknown Insert operation #{args.inspect}" unless Operations.include?(operation)

  send("#{operation}!", arr, *args) # replace!(arr, Old, New)

  # arr
end

Private Instance Methods

after!(arr, old_func, new_func) click to toggle source
# File lib/pipetree/insert.rb, line 42
def after!(arr, old_func, new_func)
  index = arr.index(old_func)+1
  arr.insert(index, new_func)
end
append!(arr, old_func, new_func) click to toggle source
# File lib/pipetree/insert.rb, line 47
def append!(arr, old_func, new_func)
  arr << (new_func)
end
before!(arr, old_func, new_func) click to toggle source

TODO: not nested.

# File lib/pipetree/insert.rb, line 37
def before!(arr, old_func, new_func)
  index = arr.index(old_func)
  arr.insert(index, new_func)
end
delete!(arr, old_func, *) click to toggle source
# File lib/pipetree/insert.rb, line 29
def delete!(arr, old_func, *)
  index = arr.index(old_func)
  arr.delete_at(index)

  arr
end
prepend!(arr, old_func, new_func) click to toggle source
# File lib/pipetree/insert.rb, line 51
def prepend!(arr, old_func, new_func)
  arr.unshift(new_func)
end
replace!(arr, old_func, new_func) click to toggle source
# File lib/pipetree/insert.rb, line 16
def replace!(arr, old_func, new_func)
  arr[arr.index(old_func)] = new_func

  # arr.each_with_index { |func, index|
  #   if func.is_a?(::Pipetree::Collect)
  #     arr[index] = Collect[*Pipeline::Insert.(func, new_func, replace: old_func)]
  #   end

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