Class: Mws::Enum
- Inherits:
-
Object
- Object
- Mws::Enum
- Defined in:
- lib/mws/enum.rb
Class Method Summary collapse
Instance Method Summary collapse
- #for(it) ⇒ Object
-
#initialize(entries) ⇒ Enum
constructor
A new instance of Enum.
- #sym(str) ⇒ Object
- #syms ⇒ Object
- #val(sym) ⇒ Object
- #vals ⇒ Object
Constructor Details
#initialize(entries) ⇒ Enum
Returns a new instance of Enum.
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/mws/enum.rb', line 9 def initialize(entries) @reverse = {} @entries = [] entries.each do | key, values | entry = EnumEntry.new(key, values) @entries << entry @reverse[key] = entry values = [ values ] unless values.respond_to? :each values.each do | value | @reverse[value] = entry end end end |
Class Method Details
.for(h) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/mws/enum.rb', line 46 def self.for(h) it = new(h) eigenclass = class << it self end h.each do | key, value | eigenclass.send(:define_method, key.to_s.upcase.to_sym) do it.for key end end it end |
.sym_reader(target, *attributes) ⇒ Object
59 60 61 62 63 64 65 66 |
# File 'lib/mws/enum.rb', line 59 def self.sym_reader(target, *attributes) attributes.each do | attribute | target.send(:define_method, attribute) do entry = send(:instance_variable_get, "@#{attribute}") entry && entry.sym end end end |
Instance Method Details
#for(it) ⇒ Object
31 32 33 34 |
# File 'lib/mws/enum.rb', line 31 def for(it) return it if it.instance_of? EnumEntry @reverse[it] end |
#sym(str) ⇒ Object
36 37 38 39 |
# File 'lib/mws/enum.rb', line 36 def sym(str) entry = self.for(str) entry && entry.sym end |
#syms ⇒ Object
23 24 25 |
# File 'lib/mws/enum.rb', line 23 def syms @entries.map { |it| it.sym } end |
#val(sym) ⇒ Object
41 42 43 44 |
# File 'lib/mws/enum.rb', line 41 def val(sym) entry = self.for(sym) entry && entry.val end |
#vals ⇒ Object
27 28 29 |
# File 'lib/mws/enum.rb', line 27 def vals @entries.map { |it| it.val }.flatten end |