class EacRubyUtils::Listable::Lists
def acts_as_listable_items
def acts_as_listable_items @acts_as_listable_items ||= ActiveSupport::HashWithIndifferentAccess.new end
def add(list_class, item, labels)
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
def check_acts_as_listable_new_item(item)
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
def find_list_by_method(method)
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
def initialize(source)
def initialize(source) @source = source end
def method_missing(name, *args, &block)
def method_missing(name, *args, &block) list = find_list_by_method(name) list || super end
def respond_to_missing?(name, include_all = false)
def respond_to_missing?(name, include_all = false) find_list_by_method(name) || super end