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