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