class So::And

Public Class Methods

and_(*args) click to toggle source
# File lib/spec_object.rb, line 210
def self.and_(*args)
  args.map! do |arg|
    arg.to_so_expr
  end

  args1 =
    args.select do |arg|
      if arg.kind_of?(Const)
        if arg.value == false
          return arg
        elsif arg.value == true
          false
        else
          true
        end
      else
        true
      end
    end

  if args1.size == 1
    args1[0]
  elsif args1.size == 0
    true.to_so_expr
  else
    new(*args1)
  end
end
new(*args) click to toggle source
# File lib/spec_object.rb, line 206
def initialize(*args)
  @args = args
end

Public Instance Methods

evaluate(calls) click to toggle source
# File lib/spec_object.rb, line 248
def evaluate(calls)
  And.and_(*@args.map do |arg| arg.evaluate(calls) end)
end
pp(n) click to toggle source
# File lib/spec_object.rb, line 239
def pp(n)
  s = @args.map do |arg| arg.pp(n+2) end.join("\n")
  "#{' '*n}(and\n#{s})"
end
substitute(v, e) click to toggle source
# File lib/spec_object.rb, line 244
def substitute(v, e)
  And.and_(*@args.map do |arg| arg.substitute(v, e) end)
end