module Enum::ClassMethods
Public Instance Methods
check(value)
click to toggle source
# File lib/emery/enum.rb, line 17 def check(value) T.check_not_nil(self, value) if !value?(value) raise TypeError.new("Value '#{value.inspect.to_s}' is not a member of enum #{self}") end end
define(key, value)
click to toggle source
# File lib/emery/enum.rb, line 32 def define(key, value) @_enum_hash ||= {} @_enums_by_value ||= {} if @_enum_hash.key?(key) then raise TypeError.new("Duplicate key: #{key}") end if @_enums_by_value.key?(value) then raise TypeError.new("Duplicate value: #{value}") end new_instance = new(key, value) @_enum_hash[key] = new_instance @_enums_by_value[value] = new_instance if key.to_s == key.to_s.upcase const_set key, value else define_singleton_method(key) { value } end end
each(&block)
click to toggle source
# File lib/emery/enum.rb, line 55 def each(&block) @_enum_hash.each(&block) end
jsoner_deserialize(json_value)
click to toggle source
# File lib/emery/enum.rb, line 24 def jsoner_deserialize(json_value) T.check(self, json_value) end
jsoner_serialize(value)
click to toggle source
# File lib/emery/enum.rb, line 28 def jsoner_serialize(value) T.check(self, value) end
key(v)
click to toggle source
# File lib/emery/enum.rb, line 80 def key(v) enum = @_enums_by_value[v] enum.key if enum end
key?(k)
click to toggle source
# File lib/emery/enum.rb, line 67 def key?(k) @_enum_hash.key?(k) end
keys()
click to toggle source
# File lib/emery/enum.rb, line 85 def keys @_enum_hash.values.map(&:key) end
parse(k)
click to toggle source
# File lib/emery/enum.rb, line 59 def parse(k) k = k.to_s.upcase each do |key, enum| return enum.value if key.to_s.upcase == k end nil end
to_h()
click to toggle source
# File lib/emery/enum.rb, line 93 def to_h Hash[@_enum_hash.map do |key, enum| [key, enum.value] end] end
value(k)
click to toggle source
# File lib/emery/enum.rb, line 71 def value(k) enum = @_enum_hash[k] enum.value if enum end
value?(v)
click to toggle source
# File lib/emery/enum.rb, line 76 def value?(v) @_enums_by_value.key?(v) end
values()
click to toggle source
# File lib/emery/enum.rb, line 89 def values @_enum_hash.values.map(&:value) end