class RubyEnum::Base

Attributes

name[R]

Public Class Methods

all() click to toggle source
# File lib/rubyenum.rb, line 12
def self.all
  class_variable_get(:"@@all")
end
enum(symbol, *vals) click to toggle source
# File lib/rubyenum.rb, line 43
def self.enum(symbol, *vals)
  enumObj = new symbol.to_s
  const_set(symbol.to_s, enumObj)
  vals.each_with_index do |val, i|
    if get_fields[i].nil?
      raise "too many arguments passed to enum. Each enum may only have as many values as fields defined."
    end
    enumObj.add_attribute(get_fields[i], val)
  end
  class_variable_get(:"@@all") << enumObj
end
fields(*args) click to toggle source
# File lib/rubyenum.rb, line 20
def self.fields(*args) 
  class_variable_set(:"@@all", [])
  fields = []
  args.each do |argument|
    fields << argument
    define_singleton_method("from_#{argument.to_s}") do |value|
      item_to_return = nil
      class_variable_get(:"@@all").each do |item|
        if item.send(argument) == value 
          item_to_return = item
          break
        end
      end
      item_to_return
    end
  end
  const_set("FIELDS", fields)
end
get_fields() click to toggle source
# File lib/rubyenum.rb, line 16
def self.get_fields
  const_get("FIELDS")
end
new(name) click to toggle source
# File lib/rubyenum.rb, line 55
def initialize(name)
  @name = name
end
value_of(symbol) click to toggle source
# File lib/rubyenum.rb, line 39
def self.value_of(symbol)
  const_get(symbol.to_s)
end

Public Instance Methods

add_attribute(attr_name, value) click to toggle source
# File lib/rubyenum.rb, line 59
def add_attribute(attr_name, value)
  var = instance_variable_set(:"@#{attr_name}", value)
  define_singleton_method("#{attr_name}") do 
    var
  end
end