diff options
Diffstat (limited to 'lib/blink/function.rb')
-rw-r--r-- | lib/blink/function.rb | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/lib/blink/function.rb b/lib/blink/function.rb index 9e67b0071..4f10fb2c6 100644 --- a/lib/blink/function.rb +++ b/lib/blink/function.rb @@ -16,8 +16,8 @@ module Blink #--------------------------------------------------------------- #--------------------------------------------------------------- - def call(*args) - @code.call(*args) + def call(args) + @code.call(args) end #--------------------------------------------------------------- @@ -36,6 +36,37 @@ module Blink Function.new("retrieve", proc { |fact| require 'blink/fact' - return Fact[fact] + value = Fact[fact] + Blink.debug("retrieved %s as %s" % [fact,value]) + value + }) + + Function.new("addfact", proc { |args| + require 'blink/fact' + #Blink.debug("running addfact") + + hash = nil + if args.is_a?(Array) + hash = Hash[*args] + end + name = nil + if hash.has_key?("name") + name = hash["name"] + hash.delete("name") + elsif hash.has_key?(:name) + name = hash[:name] + hash.delete(:name) + else + raise "Functions must have names" + end + #Blink.debug("adding fact %s" % name) + newfact = Fact.add(name) { |fact| + hash.each { |key,value| + method = key + "=" + fact.send(method,value) + } + } + + #Blink.debug("got fact %s" % newfact) }) end |