- Ruby port of EventEmitter from Node.js
- http://shokai.github.com/event_emitter
% gem install event_emitter
load rubygem
require "rubygems"
require "event_emitter"
include
class User
include EventEmitter
attr_accessor :name
end
regist event listener
user = User.new
user.name = "shokai"
user.on :go do |data|
puts "#{name} go to #{data[:place]}"
end
call event
user.emit :go, {:place => "mountain"}
# => "shokai go to mountain"
regist event using "once"
user.once :eat do |what, where|
puts "#{name} -> eat #{what} at #{where}"
end
call
user.emit :eat, "BEEF", "zanmai" # => "shokai -> eat BEEF at zanmai"
user.emit :eat, "Ramen", "marutomo" # => do not call. call only first time.
apply as instance-specific method
class Foo
end
foo = Foo.new
EventEmitter.apply foo
remove event listener
user.remove_listener :go
user.remove_listener event_id
catch all events
user.on :* do |event_name, args|
puts event_name + " called"
p args
end
see samples https://github.com/shokai/event_emitter/tree/master/samples
% gem install bundler
% bundle install
% rake test
% rake benchmark
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request