class Dentaku::AST::If

Attributes

left[R]
predicate[R]
right[R]

Public Class Methods

max_param_count() click to toggle source
# File lib/dentaku/ast/functions/if.rb, line 12
def self.max_param_count
  3
end
min_param_count() click to toggle source
# File lib/dentaku/ast/functions/if.rb, line 8
def self.min_param_count
  3
end
new(predicate, left, right) click to toggle source
# File lib/dentaku/ast/functions/if.rb, line 16
def initialize(predicate, left, right)
  @predicate = predicate
  @left      = left
  @right     = right
end

Public Instance Methods

args() click to toggle source
# File lib/dentaku/ast/functions/if.rb, line 22
def args
  [predicate, left, right]
end
dependencies(context = {}) click to toggle source
# File lib/dentaku/ast/functions/if.rb, line 38
def dependencies(context = {})
  predicate.value(context) ? left.dependencies(context) : right.dependencies(context)
rescue Dentaku::Error, Dentaku::ArgumentError, Dentaku::ZeroDivisionError
  args.flat_map { |arg| arg.dependencies(context) }.uniq
end
node_type() click to toggle source
# File lib/dentaku/ast/functions/if.rb, line 30
def node_type
  :condition
end
type() click to toggle source
# File lib/dentaku/ast/functions/if.rb, line 34
def type
  left.type
end
value(context = {}) click to toggle source
# File lib/dentaku/ast/functions/if.rb, line 26
def value(context = {})
  predicate.value(context) ? left.value(context) : right.value(context)
end