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