class Cot::Enum

Attributes

num[RW]
used[RW]

Public Class Methods

new() click to toggle source
# File lib/cot/enum.rb, line 4
def initialize
  @used = {}
  @num = 1
end

Public Instance Methods

[](key) click to toggle source
# File lib/cot/enum.rb, line 23
def [](key)
  public_send key
end
entry(name, options = {}) click to toggle source
# File lib/cot/enum.rb, line 9
def entry(name, options = {})
  value = options[:value] || num
  if used.key? value
    fail "#{name} tried to set value #{value}, which is already used by #{used[value]}. Enum values are unique."
  end

  self.class.__send__ :define_method, name do
    value
  end

  @num = value + 1
  used[value] = name
end