module Predicate::Var
Public Instance Methods
dig_terms()
click to toggle source
# File lib/predicate/nodes/var.rb, line 19 def dig_terms @dig_terms ||= case formaldef when String formaldef.split(".").map{|elm| elm =~ /^\d+$/ ? elm.to_i : elm.to_sym } when Array formaldef else raise ArgumentError, "Unrecognized variable def `#{formaldef}`" end end
evaluate(on)
click to toggle source
# File lib/predicate/nodes/var.rb, line 32 def evaluate(on) case semantics when :dig dig_terms.inject(on){|ctx,elm| ctx.dig(elm) } when :send dig_terms.inject(on){|ctx,elm| ctx.__send__(elm.to_sym) } when :public_send dig_terms.inject(on){|ctx,elm| ctx.public_send(elm.to_sym) } else raise ArgumentError, "Unrecognized variable semantics `#{semantics}`" end end
formaldef()
click to toggle source
# File lib/predicate/nodes/var.rb, line 7 def formaldef self[1] end
free_variables()
click to toggle source
# File lib/predicate/nodes/var.rb, line 15 def free_variables @free_variables ||= [ [formaldef, semantics] ] end
priority()
click to toggle source
# File lib/predicate/nodes/var.rb, line 5 def priority; 100; end
semantics()
click to toggle source
# File lib/predicate/nodes/var.rb, line 11 def semantics self[2] end