class Enum::Base

Public Class Methods

all() click to toggle source
# File lib/enum/base.rb, line 16
def all
  history
end
enum(t) click to toggle source
# File lib/enum/base.rb, line 32
def enum(t)
  ts = t.to_s
  unless store.include?(ts)
    raise(TokenNotFoundError, "token '#{t}'' not found in the enum #{self}")
  end
  ts
end
enums(*tokens) click to toggle source
# File lib/enum/base.rb, line 28
def enums(*tokens)
  tokens.map { |token| enum(token) }
end
include?(token) click to toggle source
# File lib/enum/base.rb, line 24
def include?(token)
  store.include?(token.to_s)
end
index(token) click to toggle source
# File lib/enum/base.rb, line 44
def index(token)
  history.index(enum(token))
end
indexes() click to toggle source
# File lib/enum/base.rb, line 20
def indexes
  (0...store.size).to_a
end
inherited(child) click to toggle source
# File lib/enum/base.rb, line 6
def inherited(child)
  return if self == Enum

  init_child_class(child)
end
name(t) click to toggle source
# File lib/enum/base.rb, line 40
def name(t)
  translate(enum(t))
end
values(*ary) click to toggle source
# File lib/enum/base.rb, line 12
def values(*ary)
  ary.each { |val| add_value(val.to_s) }
end

Protected Class Methods

history() click to toggle source
# File lib/enum/base.rb, line 58
def history
  @history ||= Array.new
end
history=(ary) click to toggle source
# File lib/enum/base.rb, line 62
def history=(ary)
  @history = ary
end
store() click to toggle source
# File lib/enum/base.rb, line 50
def store
  @store ||= Set.new
end
store=(set) click to toggle source
# File lib/enum/base.rb, line 54
def store=(set)
  @store = set
end
translate(token, options = {}) click to toggle source
# File lib/enum/base.rb, line 66
def translate(token, options = {})
  I18n.t(token, scope: "enum.#{self}", exception_handler: proc do
    if superclass == Enum::Base
      I18n.t(token, options.merge(scope: "enum.#{self}"))
    else
      superclass.translate(token, exception_handler: proc do
        I18n.t(token, scope: "enum.#{self}")
      end)
    end
  end)
end

Private Class Methods

add_value(val) click to toggle source
# File lib/enum/base.rb, line 80
def add_value(val)
  store.add(val)
  history.push(val)
end
init_child_class(child) click to toggle source
# File lib/enum/base.rb, line 85
def init_child_class(child)
  child.store = self.store.clone
  child.history = self.history.clone
end