module Callback
module ModuleMethods
# For each event_name submitted, defines a callback event with this name.
# Client code can then register as a callback listener using object.event_name.
def callback_events(*event_names)
event_names.each do |event_name|
define_callback_event(event_name)
end
end
private
def define_callback_event(event_name)
module_eval <<-EOS
def #{event_name}(&block)
register_callback(:#{event_name}, &block)
end
EOS
end
end
end
class Module
include Callback::ModuleMethods
end
syntax highlighted by Code2HTML, v. 0.9.1