Module: Tooled::Publisher::ClassMethods

Defined in:
lib/tooled/publisher.rb

Instance Method Summary collapse

Instance Method Details

#publishable_events(*event_names) ⇒ Object

Sets the list of publishable events. If an event is not registered

as a publishable event then it will not fire.


80
81
82
# File 'lib/tooled/publisher.rb', line 80

def publishable_events(*event_names)
  @publishable_events = event_names.collect(&:to_sym).uniq
end

#publishable_events_listObject

Provides an array with all publishable event names.



96
97
98
# File 'lib/tooled/publisher.rb', line 96

def publishable_events_list
  (@publishable_events ||= Array.new).dup
end

#register_event(event_name) ⇒ Object

Registers an individual event without removing previously added events.



87
88
89
90
91
# File 'lib/tooled/publisher.rb', line 87

def register_event(event_name)
  event_name = event_name.to_sym
  @publishable_events ||= Array.new
  @publishable_events << event_name unless @publishable_events.include?(event_name)
end

#register_subscriber(subscriber, *event_names) ⇒ Object

Registers an individual subscriber to any number of events from a class

level.


111
112
113
114
115
116
117
# File 'lib/tooled/publisher.rb', line 111

def register_subscriber(subscriber, *event_names)
  @subscribers ||= Hash.new
  events = event_names.collect(&:to_sym).uniq
  invalid_events = events - publishable_events_list
  raise EventMissingException.new("`#{invalid_events.collect(&:to_s).join('`, `')}` are not registered events") unless invalid_events.empty?
  @subscribers[subscriber] = events
end

#subscribersObject

Provides a hash with all subscribers and their associated events.



103
104
105
# File 'lib/tooled/publisher.rb', line 103

def subscribers
  (@subscribers ||= Hash.new).dup
end