Module: PagesCore::PubSub

Defined in:
lib/pages_core/pub_sub.rb

Defined Under Namespace

Classes: Subscriber

Class Method Summary collapse

Class Method Details

.publish(name, payload = {}) ⇒ Object



6
7
8
9
10
# File 'lib/pages_core/pub_sub.rb', line 6

def publish(name, payload = {})
  payload_struct = OpenStruct.new(payload)
  subscribers.select { |s| s.name == name }
             .each { |s| s.call(payload_struct) }
end

.subscribe(name, &block) ⇒ Object



12
13
14
15
16
# File 'lib/pages_core/pub_sub.rb', line 12

def subscribe(name, &block)
  subscriber = PagesCore::PubSub::Subscriber.new(name, block)
  subscribers << subscriber
  subscriber
end

.subscribersObject



18
19
20
# File 'lib/pages_core/pub_sub.rb', line 18

def subscribers
  @subscribers ||= []
end

.unsubscribe(subscriber) ⇒ Object



22
23
24
# File 'lib/pages_core/pub_sub.rb', line 22

def unsubscribe(subscriber)
  @subscribers = subscribers.reject { |s| s == subscriber }
end