module Signals::Subscriber::InstanceMethods

Public Instance Methods

actions_for(event) click to toggle source

Get actions for a specific event @param [Symbol] event @return [Array]

# File lib/signals/subscriber.rb, line 113
def actions_for(event)
  self.events[event] || Array.new
end
call(event, *args) click to toggle source

@param [Symbol] event @return [void]

# File lib/signals/subscriber.rb, line 66
def call(event, *args)
  if event_enabled?(event)
    actions_for(event).each do |action|
      self.send(action, *args) if self.respond_to?(action)
    end
  end
  args.one? ? args.first : args
end
disable_event(event) click to toggle source

Disables an event temporarily @param [Symbol] event

# File lib/signals/subscriber.rb, line 77
def disable_event(event)
  disabled_events.add(event)
  self
end
disabled_events() click to toggle source

The set of disabled events @return [Set] a set of disabled events

# File lib/signals/subscriber.rb, line 119
def disabled_events
  @disabled_events ||= Set.new
end
enable_event(event) click to toggle source

Enables an event that was disabled @param [Symbol] event

# File lib/signals/subscriber.rb, line 84
def enable_event(event)
  disabled_events.delete(event)
  self
end
event?(event) click to toggle source

Checks to see if the event is present @param [Symbol] event @return [Boolean]

# File lib/signals/subscriber.rb, line 106
def event?(event)
  events.include?(event)
end
event_disabled?(event) click to toggle source

Checks to see if the event is disabled @param [Symbol] event @return [Boolean]

# File lib/signals/subscriber.rb, line 92
def event_disabled?(event)
  disabled_events.include?(event)
end
event_enabled?(event) click to toggle source

Checks to see if the event is enabled @param [Symbol] event @return [Boolean]

# File lib/signals/subscriber.rb, line 99
def event_enabled?(event)
  !event_disabled?(event)
end
events() click to toggle source

The hash of events that the subscriber is listening for @return [Hash]

# File lib/signals/subscriber.rb, line 125
def events
  self.class.events.freeze
end