class EacRubyUtils::Listable::List
Attributes
item[R]
Public Class Methods
new(lists, item, labels)
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 8 def initialize(lists, item, labels) @lists = lists @item = item @values = build_values(labels) apply_constants end
Public Instance Methods
each_value(&block)
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 15 def each_value(&block) values.each(&block) end
hash_keys_validate!(hash, error_class = ::StandardError)
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 36 def hash_keys_validate!(hash, error_class = ::StandardError) hash.keys.each { |key| value_validate!(key, error_class) } hash end
i18n_key()
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 41 def i18n_key "eac_ruby_utils.listable.#{class_i18n_key}.#{item}" end
instance_value(instance)
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 45 def instance_value(instance) v = instance.send(item) return @values[v] if @values.key?(v) raise "List value unkown: #{v} (Source: #{@lists.source}, Item: #{item})" end
method_missing(name, *args, &block)
click to toggle source
Calls superclass method
# File lib/eac_ruby_utils/listable/list.rb, line 27 def method_missing(name, *args, &block) list = find_list_by_method(name) list || super end
options()
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 23 def options @values.values.map { |v| [v.label, v.value] } end
respond_to_missing?(name, include_all = false)
click to toggle source
Calls superclass method
# File lib/eac_ruby_utils/listable/list.rb, line 32 def respond_to_missing?(name, include_all = false) find_list_by_method(name) || super end
value_valid?(value)
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 52 def value_valid?(value) values.include?(value) end
value_validate!(value, error_class = ::StandardError)
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 56 def value_validate!(value, error_class = ::StandardError) return value if value_valid?(value) raise(error_class, "Invalid value: \"#{value}\" (Valid: #{values_to_s})") end
values()
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 19 def values @values.values.map(&:value) end
values_to_s()
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 62 def values_to_s values.map { |v| "\"#{v}\"" }.join(', ') end
Private Instance Methods
apply_constants()
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 83 def apply_constants @values.values.each do |v| @lists.source.const_set(v.constant_name, v.value) end end
build_values(labels)
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 89 def build_values(labels) vs = {} parse_labels(labels).each do |value, key| v = Value.new(self, value, key) vs[v.value] = v end vs end
class_i18n_key()
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 68 def class_i18n_key @lists.source.name.underscore.to_sym end
constants()
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 79 def constants labels.each_with_index.map { |v, i| ["#{item.upcase}_#{v.upcase}", values[i]] } end
find_list_by_method(method)
click to toggle source
# File lib/eac_ruby_utils/listable/list.rb, line 72 def find_list_by_method(method) @values.values.each do |v| return v if method.to_s == "value_#{v.key}" end nil end