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