class EacRubyUtils::Listable::Lists

Attributes

source[R]

Public Class Methods

new(source) click to toggle source
# File lib/eac_ruby_utils/listable/lists.rb, line 14
def initialize(source)
  @source = source
end

Public Instance Methods

acts_as_listable_items() click to toggle source
# File lib/eac_ruby_utils/listable/lists.rb, line 33
def acts_as_listable_items
  @acts_as_listable_items ||= ActiveSupport::HashWithIndifferentAccess.new
end
method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/eac_ruby_utils/listable/lists.rb, line 24
def method_missing(name, *args, &block)
  list = find_list_by_method(name)
  list || super
end
respond_to_missing?(name, include_all = false) click to toggle source
Calls superclass method
# File lib/eac_ruby_utils/listable/lists.rb, line 29
def respond_to_missing?(name, include_all = false)
  find_list_by_method(name) || super
end

Private Instance Methods

add(list_class, item, labels) click to toggle source
# File lib/eac_ruby_utils/listable/lists.rb, line 39
def add(list_class, item, labels)
  check_acts_as_listable_new_item(item)
  acts_as_listable_items[item] = list_class.new(self, item, labels)
end
check_acts_as_listable_new_item(item) click to toggle source
# File lib/eac_ruby_utils/listable/lists.rb, line 44
def check_acts_as_listable_new_item(item)
  return unless acts_as_listable_items.key?(item)

  raise "Item já adicionado anteriormente: #{item} em #{self} " \
    "(#{acts_as_listable_items.keys})"
end
find_list_by_method(method) click to toggle source
# File lib/eac_ruby_utils/listable/lists.rb, line 51
def find_list_by_method(method)
  acts_as_listable_items.each do |item, list|
    return list if method.to_sym == item.to_sym
  end
  nil
end