Skip to content

Instantly share code, notes, and snippets.

@paulbjensen
Created March 31, 2010 10:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save paulbjensen/350152 to your computer and use it in GitHub Desktop.
Save paulbjensen/350152 to your computer and use it in GitHub Desktop.
module Callbacks
def callbacks
@_callbacks ||= {}
end
def bind(callback_name, &block)
callbacks[callback_name] ||= []
callbacks[callback_name] << block
end
def unbind(callback_name)
callbacks.delete callback_name
end
def trigger(callback_name)
return unless callbacks[callback_name]
callbacks[callback_name].each do |block|
block.call
end
end
end
# TEST ::::::::::::::::::::::
class Test
include Callbacks
end
test = Test.new
test.bind :talk do
puts 'Hello!'
end
test.bind :talk do
puts 'I am talking!'
end
test.trigger :talk
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment