Sha256: c55beb086dcb02b2cf27a00327216c1eb2f2dfdc41073bbe525b8400ebeb0985

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

# Syntactic sugar for adding a listener. Use include or extend to
# add listen/subscribe behaviour to your class instance
# or class body.

# class MyListener
#     include Flirt::Listener
#
#     def initialize
#         subscribe_to :picked, with: :picked_callback
#         # or the alias
#         listen_to :picked, with: :picked_callback
#     end
#
#     def picked_callback(event_data)
#         puts "The #{event_data[:fruit]} has been picked"
#     end
# end
#
# or:
#
# class MyListener
#     extend Flirt::Listener
#
#     subscribe_to :picked, with: :picked_callback
#     # or the alias
#     listen_to :picked, with: :picked_callback
#
#     def self.picked_callback(event_data)
#         puts "The #{event_data[:fruit]} has been picked"
#     end
# end
#

module Flirt
    module Listener
        def subscribe_to(event_name, opts = {})
            raise ArgumentError.new("You must pass a callback") unless opts[:with].is_a? Symbol
            Flirt.subscribe self, event_name, opts
        end
        alias_method :listen_to, :subscribe_to


        def unsubscribe_from(event_name, opts = {})
            raise ArgumentError.new("You must pass a callback") unless opts[:with].is_a? Symbol
            Flirt.unsubscribe self, event_name, opts
        end
        alias_method :forget, :unsubscribe_from

    end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
flirt-0.0.3 lib/flirt/listener.rb