class Iba::MethodCallExpression

Attributes

_args[R]
_method[R]
_reciever[R]

Public Class Methods

new(reciever, methodname, args) click to toggle source
# File lib/iba.rb, line 167
def initialize reciever, methodname, args
  @_reciever = reciever
  @_method = methodname
  @_args = args.map { |a| _wrap(a) }
end

Public Instance Methods

_evaluate(bnd) click to toggle source
# File lib/iba.rb, line 196
def _evaluate bnd
  rcv = @_reciever._evaluate(bnd)
  args = @_args.map { |arg| arg._evaluate(bnd) }
  rcv.send @_method, *args
end
_to_s() click to toggle source
# File lib/iba.rb, line 173
def _to_s
  rcv = @_reciever._to_s
  args = @_args.map { |a| a.respond_to?(:_to_s) ? a._to_s : a.to_s }

  if @_method == :[]
    "#{rcv}[#{args[0]}]"
  elsif _method_is_operator?
    case @_args.length
    when 0
      "#{@_method.to_s.sub(/@$/, '')}#{rcv}"
    when 1
      "(#{rcv} #{@_method} #{args.first})"
    else
      raise NotImplementedError
    end
  else
    str = rcv == '' ? '' : "#{rcv}."
    str << @_method.to_s
    str << "(#{args.join(', ')})" unless @_args.empty?
    str
  end
end

Private Instance Methods

_method_is_operator?() click to toggle source
# File lib/iba.rb, line 204
def _method_is_operator?
  @_method.to_s !~ /^[a-z]/
end