lib/resugan/kernel.rb in resugan-0.1.1 vs lib/resugan/kernel.rb in resugan-0.1.2

- old
+ new

@@ -8,25 +8,30 @@ def self.register_dispatcher(dispatcher, namespace = '') @dispatchers = {} unless @dispatchers @dispatchers[namespace] = dispatcher end - def self.register(event, block) + def self.register(event, &block) register_with_namespace("", event, block) end - def self.register_with_namespace(namespace, event, block) + def self.register_with_namespace(namespace, event, listener_id = nil, block) + @listener_ids = {} unless @listener_ids @listener = {} unless @listener + return self if listener_id && @listener_ids["#{namespace}_#{listener_id}"] + event = "#{namespace}_#{event}".to_sym unless @listener[event] @listener[event] = [block] else @listener[event] << block end + @listener_ids["#{namespace}_#{listener_id}"] = block if listener_id + self end def self.invoke(namespace, event, payload = []) event = "#{namespace}_#{event}".to_sym @@ -40,9 +45,10 @@ def self.listeners @listener end def self.clear + @listener_ids.clear if @listener_ids @listener.clear if @listener end end end