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

#allObject



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