module Flatter::Mapper::Collection::Concern

Public Instance Methods

add_item(params) click to toggle source
# File lib/flatter/mapper/collection.rb, line 69
def add_item(params)
  collection << clone.tap do |mapper|
    item = build_collection_item
    mapper.reset_locals!
    mapper.set_target!(item)
    mapper.item_index = collection.length
    mapper.write(params)
    add_item_to_target(item)
  end
end
delete_target_item(item) click to toggle source
# File lib/flatter/mapper/collection.rb, line 61
def delete_target_item(item)
  !!target.delete(item)
end
update_item(key, params) click to toggle source
# File lib/flatter/mapper/collection.rb, line 65
def update_item(key, params)
  collection.find{ |item| item[:key] == key }.write(params)
end

Private Instance Methods

add_item_to_target(item) click to toggle source
# File lib/flatter/mapper/collection.rb, line 85
def add_item_to_target(item)
  target << item unless target.include?(item)
end
build_collection_item() click to toggle source
# File lib/flatter/mapper/collection.rb, line 80
def build_collection_item
  target_class.new
end
remove_items(keys) click to toggle source
# File lib/flatter/mapper/collection.rb, line 53
def remove_items(keys)
  collection.reject! do |item|
    (item[:key].nil? || keys.include?(item[:key])) &&
      delete_target_item(item.target)
  end
end