Module: Flirt

Defined in:
lib/flirt.rb,
lib/flirt/version.rb,
lib/flirt/callback.rb,
lib/flirt/listener.rb

Overview

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

Defined Under Namespace

Modules: Listener Classes: Callback

Constant Summary collapse

VERSION =
"0.0.4"

Class Method Summary collapse

Class Method Details

.clearObject



47
48
49
# File 'lib/flirt.rb', line 47

def clear
    @callbacks = {}
end

.disableObject



42
43
44
# File 'lib/flirt.rb', line 42

def disable
    self.disabled = true
end

.enableObject



37
38
39
# File 'lib/flirt.rb', line 37

def enable
    self.disabled = false
end

.publish(event_name, event_data) ⇒ Object

Raises:

  • (ArgumentError)


12
13
14
15
16
17
18
# File 'lib/flirt.rb', line 12

def publish(event_name, event_data)
    return if disabled
    raise ArgumentError.new("Event name must be a symbol") unless event_name.is_a? Symbol
    (callbacks[event_name] || []).each do |callback|
        callback.call(event_data)
    end
end

.subscribe(object, event_name, options = {}) ⇒ Object



21
22
23
24
25
26
# File 'lib/flirt.rb', line 21

def subscribe(object, event_name, options = {})
    check_subscription_arguments(event_name, object, options)
    callback = Flirt::Callback.new object: object,
                                   callback_name: options[:with]
    add_callback(event_name, callback)
end

.unsubscribe(object, event_name, options = {}) ⇒ Object



29
30
31
32
33
34
# File 'lib/flirt.rb', line 29

def unsubscribe(object, event_name, options = {})
    check_subscription_arguments(event_name, object, options)
    callback = Flirt::Callback.new object: object,
                                   callback_name: options[:with]
    remove_callback(event_name, callback)
end