class ConstEnum::Base
Attributes
attributes[R]
key[R]
Public Class Methods
[](value)
click to toggle source
# File lib/const_enum/base.rb, line 47 def [](value) @instances[value] end
each() { |obj| ... }
click to toggle source
# File lib/const_enum/base.rb, line 75 def each return Enumerator.new(self) unless block_given? @instances.each {|value, obj| yield obj } end
each_key() { |key| ... }
click to toggle source
# File lib/const_enum/base.rb, line 80 def each_key return Enumerator.new(self, :each_key) unless block_given? keys.each {|key| yield key } end
each_label() { |label| ... }
click to toggle source
# File lib/const_enum/base.rb, line 90 def each_label return Enumerator.new(self, :each_label) unless block_given? labels.each {|label| yield label } end
each_value() { |value| ... }
click to toggle source
# File lib/const_enum/base.rb, line 85 def each_value return Enumerator.new(self, :each_value) unless block_given? values.each {|value| yield value } end
include?(value)
click to toggle source
# File lib/const_enum/base.rb, line 43 def include?(value) (ConstEnum === value) ? @instances.include?(value) : @instances.key?(value) end
inherited(clazz)
click to toggle source
# File lib/const_enum/base.rb, line 37 def inherited(clazz) hash_class = RUBY_VERSION < '1.9' ? ActiveSupport::OrderedHash : Hash clazz.instance_variable_set(:@instances, hash_class.new) clazz.instance_variable_set(:@keys, hash_class.new) end
inspect()
click to toggle source
# File lib/const_enum/base.rb, line 95 def inspect to_s end
key(value)
click to toggle source
# File lib/const_enum/base.rb, line 55 def key(value) @keys[value] end
keys()
click to toggle source
# File lib/const_enum/base.rb, line 59 def keys @keys.values end
label(value)
click to toggle source
# File lib/const_enum/base.rb, line 51 def label(value) @instances[value].label end
labels()
click to toggle source
# File lib/const_enum/base.rb, line 67 def labels @instances.values.map(&:label) end
new(key, *attributes)
click to toggle source
# File lib/const_enum/base.rb, line 9 def initialize(key, *attributes) @key = key @attributes = attributes @attributes.freeze end
size()
click to toggle source
# File lib/const_enum/base.rb, line 71 def size @instances.size end
to_s()
click to toggle source
Calls superclass method
# File lib/const_enum/base.rb, line 99 def to_s return super if ConstEnum::Base == self elems = [] @keys.each do |value, key| elems << "#{key}[#{@instances[value]}]" end super << " { #{elems.join(', ')} }" end
values()
click to toggle source
# File lib/const_enum/base.rb, line 63 def values @instances.keys end
Protected Class Methods
define_const(key, value, *args)
click to toggle source
# File lib/const_enum/base.rb, line 109 def define_const(key, value, *args) raise "already initialized constant value #{value}. name: #{key} defined_name: #{@keys[value]}"if @instances.key? value const_set(key, value) obj = self.new(key, value, *args) singleton_class.__send__(:define_method, key) { obj } obj.freeze @instances[value] = obj @keys[value] = key end
Public Instance Methods
[](pos)
click to toggle source
# File lib/const_enum/base.rb, line 15 def [](pos) @attributes[pos] end
inspect()
click to toggle source
# File lib/const_enum/base.rb, line 27 def inspect "#{@attributes.first.inspect}:#{(@attributes[2 .. -1]||[]).unshift(label).map(&:inspect).join(', ')}" end
label()
click to toggle source
# File lib/const_enum/base.rb, line 23 def label @attributes.second end
to_s()
click to toggle source
# File lib/const_enum/base.rb, line 31 def to_s "#{@attributes.first.inspect}:#{(@attributes[2 .. -1]||[]).unshift(label).map(&:inspect).join(', ')}" end
value()
click to toggle source
# File lib/const_enum/base.rb, line 19 def value @attributes.first end