Module: Enum
Overview
set values on each child like so: set_values :north, :east, :south, :west
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(m, *args, &block) ⇒ Object
28
29
30
31
|
# File 'lib/enum.rb', line 28
def method_missing m, *args, &block
index_array = (0..(values.size-1)).to_a
index_array.respond_to?(m) ? index_array.send(m,*args,&block) : super
end
|
Instance Method Details
#[](index) ⇒ Object
16
17
18
|
# File 'lib/enum.rb', line 16
def [] index
self.send(values[index])
end
|
#all ⇒ Object
24
25
26
|
# File 'lib/enum.rb', line 24
def all
values
end
|
#name(index) ⇒ Object
20
21
22
|
# File 'lib/enum.rb', line 20
def name index
values[index].to_s
end
|
#next(index) ⇒ Object
11
12
13
14
|
# File 'lib/enum.rb', line 11
def next index
next_index = index + 1
send(values[next_index].nil? ? values.first : values[next_index])
end
|
#set_values(*args) ⇒ Object
4
5
6
7
8
9
|
# File 'lib/enum.rb', line 4
def set_values *args
self.define_singleton_method(:values) { args }
args.each_index do |i|
self.define_singleton_method(args[i]) { i }
end
end
|