module Enumb

Constants

VERSION

Public Instance Methods

each(&block)
Alias for: enums
enumerator(hash) click to toggle source
# File lib/enumb.rb, line 11
def enumerator(hash)
  raise 'Parameter must be hash' unless hash.is_a?(Hash)
  raise 'Multiple key/value pairs passed. Only single pair accepted.' unless hash.length == 1
  key, val = hash.first
  raise 'Enumerator key needs to be convertible to string' unless key.respond_to?(:to_s)
  create_class_method(key.to_s) {
    self.class_variable_get(String('@@__enum__' + key.to_s).to_sym)
  }
  self.class_variable_set(String('@@__enum__' + key.to_s).to_sym, val)
end
enums() { |v| ... } click to toggle source

Iterates using a block if provided, otherwise returns an array of enums

# File lib/enumb.rb, line 40
def enums(&block)
  values = get_enums
  if block
    values.each do |v|
      yield v
    end
  else
    values
  end
end
Also aliased as: each, map
include?(enum_) click to toggle source

Returns true/false if provided enum is a part of this class

# File lib/enumb.rb, line 52
def include?(enum_)
  enums.include?(enum_)
end
map(&block)
Alias for: enums
parse(descriptor) click to toggle source
# File lib/enumb.rb, line 30
def parse(descriptor)
  raise 'Descriptor needs to be convertible to string' unless descriptor.respond_to?(:to_s)
  self.class_variables.each do |x|
    if x.to_s.downcase == '@@__enum__' + descriptor.to_s.downcase
      return self.class_variable_get(x)
    end
  end
end
to_descriptor(value) click to toggle source
# File lib/enumb.rb, line 22
def to_descriptor(value)
  self.methods.each do |x|
    if ((self.send(x) rescue nil) == value)
      return x.to_s
    end
  end
end

Private Instance Methods

create_class_method(name, &block) click to toggle source
# File lib/enumb.rb, line 61
def create_class_method(name, &block)
  self.class.send(:define_method, name, &block)
end
get_enums() click to toggle source

Return enum class vars

# File lib/enumb.rb, line 66
def get_enums
  # Find matching refs
  v = self.class_variables.find_all { |e| e.to_s.include? '__enum__' }
  # Lookup class variable from refs and return
  v.map { |x| class_variable_get(x) }
end