class NumberedList::List
Attributes
item[R]
Public Class Methods
add_item(item)
click to toggle source
# File lib/numbered_list.rb, line 41 def self.add_item(item) if list.has_key?(item.name) raise DuplicateKey, "The key #{item.name} has already been registered." end @items ||= {} @items[item.name] = item end
add_item_builder(item)
click to toggle source
# File lib/numbered_list.rb, line 50 def self.add_item_builder(item) self.define_singleton_method(item.builder_method_name) do self.new(item.name) end end
add_item_query(item)
click to toggle source
# File lib/numbered_list.rb, line 57 def self.add_item_query(item) define_method(item.query_method_name) do name == item.name end end
add_marshall_class()
click to toggle source
# File lib/numbered_list.rb, line 75 def self.add_marshall_class klass = self.const_set("Marshall", Class.new(NumberedList::MarshallBase)) original_class = self klass.class_eval do define_method(:value_class) do return original_class end end end
as_objs()
click to toggle source
# File lib/numbered_list.rb, line 102 def self.as_objs self.types.collect { |t| self.new(t) } end
description(label)
click to toggle source
# File lib/numbered_list.rb, line 98 def self.description(label) find_item(label).description end
find_item(key)
click to toggle source
# File lib/numbered_list.rb, line 93 def self.find_item(key) list && list.has_key?(key) ? list[key] : raise(BadType, "Unable to find the #{key}/#{key.class} for #{self.to_s} #{self.types} NumberedItem") end
item(item_values)
click to toggle source
# File lib/numbered_list.rb, line 63 def self.item(item_values) item = NumberedList::ItemValue.with(item_values) add_item(item) add_item_builder(item) add_item_query(item) class_exists = "#{self}::Marshall".constantize rescue nil #https://stackoverflow.com/a/32869926 add_marshall_class unless class_exists end
list()
click to toggle source
# File lib/numbered_list.rb, line 37 def self.list @items || {} end
new(name)
click to toggle source
# File lib/numbered_list.rb, line 85 def initialize(name) if !self.class.types.include?(name.to_s.upcase) raise BadType, "'#{name}' Class #{name.class} is not a valid #{self.class.to_s}" end @item = self.class.find_item(name.to_s) end
reset_list!()
click to toggle source
# File lib/numbered_list.rb, line 18 def self.reset_list! list.values.each do |item| if respond_to?(item.builder_method_name) ( class << self; self; end).send(:remove_method, item.builder_method_name) end #https://www.ruby-forum.com/topic/116025 if respond_to?(item.query_method_name) remove_method item.query_method_name end end @items = {} end
types()
click to toggle source
# File lib/numbered_list.rb, line 118 def self.types list.keys end
Public Instance Methods
==(other)
click to toggle source
# File lib/numbered_list.rb, line 106 def ==(other) other.to_s == self.to_s end
to_s()
click to toggle source
# File lib/numbered_list.rb, line 110 def to_s name end
to_str()
click to toggle source
# File lib/numbered_list.rb, line 114 def to_str to_s end