module Enumb
Constants
- VERSION
Public Instance Methods
enumerator(hash)
click to toggle source
# File lib/enumb.rb, line 11 def enumerator(hash) raise 'Parameter must be hash' unless hash.is_a?(Hash) raise 'Multiple key/value pairs passed. Only single pair accepted.' unless hash.length == 1 key, val = hash.first raise 'Enumerator key needs to be convertible to string' unless key.respond_to?(:to_s) create_class_method(key.to_s) { self.class_variable_get(String('@@__enum__' + key.to_s).to_sym) } self.class_variable_set(String('@@__enum__' + key.to_s).to_sym, val) end
enums() { |v| ... }
click to toggle source
Iterates using a block if provided, otherwise returns an array of enums
# File lib/enumb.rb, line 40 def enums(&block) values = get_enums if block values.each do |v| yield v end else values end end
include?(enum_)
click to toggle source
Returns true/false if provided enum is a part of this class
# File lib/enumb.rb, line 52 def include?(enum_) enums.include?(enum_) end
parse(descriptor)
click to toggle source
# File lib/enumb.rb, line 30 def parse(descriptor) raise 'Descriptor needs to be convertible to string' unless descriptor.respond_to?(:to_s) self.class_variables.each do |x| if x.to_s.downcase == '@@__enum__' + descriptor.to_s.downcase return self.class_variable_get(x) end end end
to_descriptor(value)
click to toggle source
# File lib/enumb.rb, line 22 def to_descriptor(value) self.methods.each do |x| if ((self.send(x) rescue nil) == value) return x.to_s end end end
Private Instance Methods
create_class_method(name, &block)
click to toggle source
# File lib/enumb.rb, line 61 def create_class_method(name, &block) self.class.send(:define_method, name, &block) end
get_enums()
click to toggle source
Return enum class vars
# File lib/enumb.rb, line 66 def get_enums # Find matching refs v = self.class_variables.find_all { |e| e.to_s.include? '__enum__' } # Lookup class variable from refs and return v.map { |x| class_variable_get(x) } end