Sha256: a232e1bcd013211db44210503e904c818fb85da76b381301f04addc004d9b623
Contents?: true
Size: 785 Bytes
Versions: 24
Compression:
Stored size: 785 Bytes
Contents
# frozen_string_literal: true module PagesCore module PubSub class << self def publish(name, payload = {}) subscribers.select { |s| s.name == name } .each { |s| s.call(payload) } end def subscribe(name, &block) subscriber = PagesCore::PubSub::Subscriber.new(name, block) subscribers << subscriber subscriber end def subscribers @subscribers ||= [] end def unsubscribe(subscriber) @subscribers = subscribers.reject { |s| s == subscriber } end end class Subscriber attr_reader :name, :callback delegate :call, to: :callback def initialize(name, callback) @name = name @callback = callback end end end end
Version data entries
24 entries across 24 versions & 1 rubygems