RbEvent
Simple event
You can use event in Ruby like AS3, .Net
require 'rb_event'
class Test
include RbEvent
def say
fire_event :said, "Hello? World!"
end
def say_hello(msg)
puts msg
end
end
inst = Test.new
inst.listen :said do |msg|
puts msg
end
inst.say
# Hello? World!
inst.listen :said, inst.method(:say_hello)
inst.say
# Hello? World!
Installation
Run gem install rb_event
or add gem 'rb_event'
to your Gemfile
And add to your .rb source file:
require 'rb_event'
Usage
Add include RbEvent
to your class, and see below.
listen(name, listener=nil, &listener_block)
- name [#to_sym] Event name
- listener [#call]
Adds an event listener and returns the listener added.
listener 'or' listener_block required.
Also aliased as: add_listener
unlisten(name, listener)
Removes an event listener.
Also aliased as: remove_listener
listen?(name, listener)
Checks the listener is added.
Also aliased as: has_listener?
.
protected fire_event(name, *args)
Calls listeners
Example
Block listener
require 'rb_event'
class Test
include RbEvent
def say
fire_event :said, "Hello? World!"
end
end
inst = Test.new
inst.listen :said do |msg|
puts msg
end
inst.say
# Hello? World!
Method as a listener
require 'rb_event'
class Test
include RbEvent
def say_hello(msg)
puts msg
end
end
inst.listen :said, inst.method(:say_hello)
inst.say
# Hello? World!
Remove event listener
require 'rb_event'
class Test
include RbEvent
end
# Works with every listener type (Block, Proc, Method ...)
inst = Test.new # <RbEvent::Listener: ...>
listener = inst.listen(:test) {}
puts inst.listen?(:test, listener) # true
inst.unlisten :test, listener
# Proc
p = Proc.new {}
inst.listen :test, p
puts inst.listen?(:test, p) # true
inst.unlisten :test, p
# Method
def callback
end
inst.listen :test, method(:callback)
puts inst.listen?(:test, method(:callback)) # true
inst.unlisten :test, method(:callback)
Author
Sputnik Gugja ([email protected])
License
This is free software released into the public domain (CC0 license).
See LICENSE
file.