Module: Signals::Subscriber::InstanceMethods

Defined in:
lib/signals/subscriber.rb

Instance Method Summary collapse

Instance Method Details

#actions_for(event) ⇒ Array

Get actions for a specific event

Parameters:

  • event (Symbol)

Returns:

  • (Array)


113
114
115
# File 'lib/signals/subscriber.rb', line 113

def actions_for(event)
  self.events[event] || Array.new
end

#call(event, *args) ⇒ void

This method returns an undefined value.

Parameters:

  • event (Symbol)


66
67
68
69
70
71
72
73
# 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) ⇒ Object

Disables an event temporarily

Parameters:

  • event (Symbol)


77
78
79
80
# File 'lib/signals/subscriber.rb', line 77

def disable_event(event)
  disabled_events.add(event)
  self
end

#disabled_eventsSet

The set of disabled events

Returns:

  • (Set)

    a set of disabled events



119
120
121
# File 'lib/signals/subscriber.rb', line 119

def disabled_events
  @disabled_events ||= Set.new
end

#enable_event(event) ⇒ Object

Enables an event that was disabled

Parameters:

  • event (Symbol)


84
85
86
87
# File 'lib/signals/subscriber.rb', line 84

def enable_event(event)
  disabled_events.delete(event)
  self
end

#event?(event) ⇒ Boolean

Checks to see if the event is present

Parameters:

  • event (Symbol)

Returns:

  • (Boolean)


106
107
108
# File 'lib/signals/subscriber.rb', line 106

def event?(event)
  events.include?(event)
end

#event_disabled?(event) ⇒ Boolean

Checks to see if the event is disabled

Parameters:

  • event (Symbol)

Returns:

  • (Boolean)


92
93
94
# File 'lib/signals/subscriber.rb', line 92

def event_disabled?(event)
  disabled_events.include?(event)
end

#event_enabled?(event) ⇒ Boolean

Checks to see if the event is enabled

Parameters:

  • event (Symbol)

Returns:

  • (Boolean)


99
100
101
# File 'lib/signals/subscriber.rb', line 99

def event_enabled?(event)
  !event_disabled?(event)
end

#eventsHash

The hash of events that the subscriber is listening for

Returns:

  • (Hash)


125
126
127
# File 'lib/signals/subscriber.rb', line 125

def events
  self.class.events.freeze
end