class Fiddley::Enum

Attributes

tag[R]

Public Class Methods

new(*args) click to toggle source
# File lib/fiddley/enum.rb, line 3
def initialize(*args)
  info, @tag = *args
  @map = {}
  if info
    last = nil
    value = 0
    info.each do |k|
      if k.is_a?(Symbol)
        @map[k] = value
        last = k
        value += 1
      elsif k.is_a?(Integer)
        @map[last] = k
        value = k + 1
      else
        raise RuntimeError, "broken enum"
      end
    end
  end
  @rmap = @map.invert
end

Public Instance Methods

[](k) click to toggle source
# File lib/fiddley/enum.rb, line 31
def [](k)
  if k.is_a?(Symbol)
    @map[k]
  elsif k.is_a?(Integer)
    @rmap[k]
  end
end
Also aliased as: find
find(k)
Alias for: []
symbol_map() click to toggle source
# File lib/fiddley/enum.rb, line 40
def symbol_map
  @map
end
Also aliased as: to_h, to_hash
symbols() click to toggle source
# File lib/fiddley/enum.rb, line 27
def symbols
  @map.keys
end
to_h()
Alias for: symbol_map
to_hash()
Alias for: symbol_map