Class: InOrder::Add

Inherits:
Object
  • Object
show all
Includes:
InOrder::Aux::CreateElement, InOrder::Aux::VarKeys
Defined in:
app/models/in_order/add.rb

Overview

Adds a new element at the beginning or end of a list. Identified (i.e. keyed) by an Owner and/or Scope.

Instance Method Summary collapse

Methods included from InOrder::Aux::VarKeys

included, #initialize

Instance Method Details

#append(model) ⇒ Object Also known as: push



19
20
21
# File 'app/models/in_order/add.rb', line 19

def append(model)
  insert model, :after, last_element
end

#call(model, at: :bottom) ⇒ Object

model is an ActiveRecord model to be linked



10
11
12
# File 'app/models/in_order/add.rb', line 10

def call(model, at: :bottom)
  bottom?(at) ? append(model) : prepend(model)
end

#insert(model, adjacency = nil, marker = nil) ⇒ Object



24
25
26
27
28
29
30
# File 'app/models/in_order/add.rb', line 24

def insert(model, adjacency=nil, marker=nil)
  marker = block_given? ? yield(iterator, model, adjacency, marker) : marker

  InOrder::Element.transaction do
    Insert.new(create_element(model, keys), marker, adjacency).call
  end
end

#prepend(model) ⇒ Object Also known as: shift



14
15
16
# File 'app/models/in_order/add.rb', line 14

def prepend(model)
  insert model, :before, first_element
end