class Iba::Combinator

Public Class Methods

new(&blk) click to toggle source
# File lib/iba.rb, line 3
def initialize &blk
  @block = blk
end

Public Instance Methods

analyse() click to toggle source
# File lib/iba.rb, line 19
def analyse
  str = "#{self} is #{call.inspect}"
  if expression.class == MethodCallExpression && expression._method == :==
    lft = expression._reciever
    rgt = expression._args.first
    exprs = [lft, rgt].map { |e| display_subexpression e }.compact
    str << "\n"
    str << exprs.join(', ')
  end
  str
end
call() click to toggle source
# File lib/iba.rb, line 7
def call
  @block.call
end
expression() click to toggle source
# File lib/iba.rb, line 15
def expression
  @expression ||= EmptyExpression.new._parse(&@block)
end
to_s() click to toggle source
# File lib/iba.rb, line 11
def to_s
  expression._to_s
end

Private Instance Methods

display_subexpression(expr) click to toggle source
# File lib/iba.rb, line 33
def display_subexpression expr
  if expr.class == LiteralExpression
    nil
  else
    str = expr._to_s
    value = expr._evaluate(@block.binding).inspect
    "#{str} is #{value}"
  end
end