class Opal::Rewriters::MlhsArgs::Arguments

Attributes

initialization[R]
rewritten[R]

Public Class Methods

new(args) click to toggle source
# File lib/opal/rewriters/mlhs_args.rb, line 70
def initialize(args)
  @args = args
  @rewritten = []
  @initialization = []
  @rewriter = MlhsRewriter.new

  split!
end

Public Instance Methods

new_mlhs_tmp() click to toggle source
# File lib/opal/rewriters/mlhs_args.rb, line 83
def new_mlhs_tmp
  @counter ||= 0
  @counter += 1
  :"$mlhs_tmp#{@counter}"
end
reset_tmp_counter!() click to toggle source
# File lib/opal/rewriters/mlhs_args.rb, line 79
def reset_tmp_counter!
  @counter = 0
end
split!() click to toggle source
# File lib/opal/rewriters/mlhs_args.rb, line 89
def split!
  @args.children.each do |arg|
    if arg.type == :mlhs
      var_name = new_mlhs_tmp
      rhs = s(:lvar, var_name)
      mlhs = @rewriter.process(arg)
      @initialization << s(:masgn, mlhs, rhs)
      @rewritten << s(:arg, var_name).updated(nil, nil, meta: { arg_name: var_name })
    else
      @rewritten << arg
    end
  end

  if @initialization.length == 1
    @initialization = @initialization[0]
  elsif @initialization.empty?
    @initialization = nil
  else
    @initialization = s(:begin, *@initialization)
  end
end