module Enum
set values on each child like so: set_values
:north, :east, :south, :west
Public Instance Methods
[](index)
click to toggle source
# File lib/enum.rb, line 16 def [] index self.send(values[index]) end
all()
click to toggle source
# File lib/enum.rb, line 24 def all values end
method_missing(m, *args, &block)
click to toggle source
Calls superclass method
# 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
name(index)
click to toggle source
# File lib/enum.rb, line 20 def name index values[index].to_s end
next(index)
click to toggle source
# 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)
click to toggle source
# 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