lib/knj/objects.rb in knjrbfw-0.0.98 vs lib/knj/objects.rb in knjrbfw-0.0.99
- old
+ new
@@ -122,47 +122,51 @@
#This connects a block to an event. When the event is called the block will be executed.
def connect(args, &block)
raise "No object given." if !args["object"]
raise "No signals given." if !args.key?("signal") and !args.key?("signals")
args["block"] = block if block_given?
- @callbacks[args["object"].to_sym] = {} if !@callbacks[args["object"]]
- conn_id = @callbacks[args["object"].to_sym].length.to_s
- @callbacks[args["object"].to_sym][conn_id] = args
+ object = args["object"].to_sym
+
+ @callbacks[object] = {} if !@callbacks[object]
+ conn_id = @callbacks[object].length.to_s
+ @callbacks[object][conn_id] = args
return conn_id
end
#Returns true if the given signal is connected to the given object.
def connected?(args)
raise "No object given." if !args["object"]
raise "No signal given." if !args.key?("signal")
+ object = args["object"].to_sym
- if @callbacks.key?(args["object"].to_sym)
- @callbacks[args["object"].to_sym].clone.each do |ckey, callback|
- return true if callback.key?("signal") and callback["signal"] == args["signal"]
- return true if callback.key?("signals") and callback["signals"].index(args["signal"]) != nil
+ if @callbacks.key?(object)
+ @callbacks[object].clone.each do |ckey, callback|
+ return true if callback.key?("signal") and callback["signal"].to_s == args["signal"].to_s
+ return true if callback.key?("signals") and (callback["signals"].include?(args["signal"].to_s) or callback["signals"].include?(args["signal"].to_sym))
end
end
return false
end
#Unconnects a connect by 'object' and 'conn_id'.
def unconnect(args)
raise ArgumentError, "No object given." if !args["object"]
- raise ArgumentError, "Object doesnt exist: '#{args["object"]}'." if !@callbacks.key?(args["object"].to_sym)
+ object = args["object"].to_sym
+ raise ArgumentError, "Object doesnt exist: '#{object}'." if !@callbacks.key?(object)
if args["conn_id"]
conn_ids = [args["conn_id"]]
elsif args["conn_ids"]
conn_ids = args["conn_ids"]
else
raise ArgumentError, "Could not figure out connection IDs."
end
conn_ids.each do |conn_id|
- raise Errno::ENOENT, "Conn ID doest exist: '#{conn_id}' (#{args})." if !@callbacks[args["object"].to_sym].key?(conn_id)
- @callbacks[args["object"].to_sym].delete(conn_id)
+ raise Errno::ENOENT, "Conn ID doest exist: '#{conn_id}' (#{args})." if !@callbacks[object].key?(conn_id)
+ @callbacks[object].delete(conn_id)
end
end
#This method is used to call the connected callbacks for an event.
def call(args, &block)
@@ -170,13 +174,13 @@
if @callbacks.key?(classstr)
@callbacks[classstr].clone.each do |callback_key, callback|
docall = false
- if callback.key?("signal") and args.key?("signal") and callback["signal"] == args["signal"]
+ if callback.key?("signal") and args.key?("signal") and callback["signal"].to_s == args["signal"].to_s
docall = true
- elsif callback["signals"] and args["signal"] and callback["signals"].include?(args["signal"])
+ elsif callback["signals"] and args["signal"] and (callback["signals"].include?(args["signal"].to_s) or callback["signals"].include?(args["signal"].to_sym))
docall = true
end
next if !docall
@@ -191,10 +195,10 @@
raise "Unknown number of arguments: #{arity}"
end
callback["block"].call(*callargs)
elsif callback["callback"]
- require "php4r"
+ require "php4r" if !Kernel.const_defined?(:Php4r)
Php4r.call_user_func(callback["callback"], args)
else
raise "No valid callback given."
end
end
\ No newline at end of file