class PowerTypes::Trigger

Attributes

event[R]
type[R]

Public Class Methods

new(_type, _event, _handler = nil, _options = {}, &_block) click to toggle source
# File lib/power_types/patterns/observer/trigger.rb, line 5
def initialize(_type, _event, _handler = nil, _options = {}, &_block)
  validate_params(_type, _event, _handler, _block)
  @type = _type
  @event = _event
  @handler = _handler || _block
  @options = _options
end

Public Instance Methods

call(_observer) click to toggle source
# File lib/power_types/patterns/observer/trigger.rb, line 13
def call(_observer)
  case @handler
  when String, Symbol
    _observer.public_send(@handler)
  when Proc
    _observer.instance_exec(&@handler)
  end
end

Private Instance Methods

validate_params(_type, _event, _handler, _block) click to toggle source
# File lib/power_types/patterns/observer/trigger.rb, line 24
def validate_params(_type, _event, _handler, _block)
  raise "Invalid type #{_type}" unless PowerTypes::Util::OBSERVABLE_TYPES.include?(_type)
  raise "Invalid event #{_event}" unless PowerTypes::Util::OBSERVABLE_EVENTS.include?(_event)
  raise "Invalid handler" unless [String, Symbol, NilClass, Proc].include?(_handler.class)
  raise "Missing block or handler name" if !_handler && !_block
end