The capability registrar allows modules to register versioned callbacks. Callbacks may only be registered once per registration namespace. If multiple callback registration is attempted a RegistrationConflictError will be raised.
Example
master_registrar = Registrar.new
master_registrar.default_registration_namespace = :test
callback procs should avoid side effects The register call will throw an exception if you don't pass in a second argument containing the registration namespace, unless the default_registration_namespace attribute is set
master_registrar.register :awesome_called do | awesome_data |
awesome_data
end
master_registrar.register :awesome_called, :something_else do | awesome_data |
"And now for something completely different"
end
dispatches to all registration namespaces in undefined order for all :awesome_called registered callbacks returns a Hash with the registration_namespace of the callback as the key, and the value is the value returned by the callback function.
calling
master_registrar.dispatch :awesome_called, :with_data => { :some_lol_data => :wow_cool }
returns
{ :test => { :some_lol_data => :wow_cool }, :something_else => "And now for something completely different" }
dispatches to named registration namespaces return a Hash with the registration_namespace as the key, and the value is the value returned by the callback function, or an empty hash if the callback function is not registered
master_registrar.dispatch :awesome_called, :in_registration_namespace => :test, :with_data => { :some_lol_data => :omg_specific_cool }
returns
{ :test => { :some_lol_data => :omg_specific_cool } }