Class: Cot::Enum

Inherits:
Object
  • Object
show all
Defined in:
lib/cot/enum.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeEnum

Returns a new instance of Enum.



4
5
6
7
# File 'lib/cot/enum.rb', line 4

def initialize
  @used = {}
  @num = 1
end

Instance Attribute Details

#numObject

Returns the value of attribute num.



3
4
5
# File 'lib/cot/enum.rb', line 3

def num
  @num
end

#usedObject

Returns the value of attribute used.



3
4
5
# File 'lib/cot/enum.rb', line 3

def used
  @used
end

Instance Method Details

#[](key) ⇒ Object



23
24
25
# File 'lib/cot/enum.rb', line 23

def [](key)
  public_send key
end

#entry(name, options = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# 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