class PinballWizard::Feature

Attributes

active[R]
disabled[R]
message[R]
name[R]
options[R]
to_s[R]

Public Class Methods

new(name, options = {}) click to toggle source
# File lib/pinball_wizard/feature.rb, line 8
def initialize(name, options = {})
  @name      = name.to_s
  @options   = options
  @active    = ensure_callable(options.fetch(:active, false))
  @options   = Helpers::Hash.without(options, :name, :active)
  @disabled  = false
end

Public Instance Methods

active?() click to toggle source
# File lib/pinball_wizard/feature.rb, line 18
def active?
  active.call
end
determine_state() click to toggle source
# File lib/pinball_wizard/feature.rb, line 32
def determine_state
  # noop: use defaults
end
disable(message = 'No reason given.') click to toggle source
# File lib/pinball_wizard/feature.rb, line 27
def disable(message = 'No reason given.')
  @disabled = true
  @message = message
end
disabled?() click to toggle source
# File lib/pinball_wizard/feature.rb, line 22
def disabled?
  determine_state # Called here for Registry#disabled?
  disabled
end
state() click to toggle source
# File lib/pinball_wizard/feature.rb, line 36
def state
  if disabled?
    "disabled: #{message}"
  elsif active?
    'active'
  else
    'inactive'
  end
end

Private Instance Methods

ensure_callable(object) click to toggle source
# File lib/pinball_wizard/feature.rb, line 48
def ensure_callable(object)
  object.respond_to?(:call) ? object : proc { object }
end