class Opal::Rewriters::Arguments

Attributes

args[R]
blockarg[R]
kwargs[R]
kwnilarg[R]
kwoptargs[R]
kwrestarg[R]
optargs[R]
postargs[R]
restarg[R]
shadowargs[R]

Public Class Methods

new(args) click to toggle source
# File lib/opal/rewriters/arguments.rb, line 10
def initialize(args)
  @args = []
  @optargs = []
  @restarg = nil
  @postargs = []
  @kwargs = []
  @kwoptargs = []
  @kwrestarg = nil
  @kwnilarg = false
  @shadowargs = []
  @blockarg = nil

  args.each do |arg|
    case arg.type
    when :arg, :mlhs
      (@restarg || @optargs.any? ? @postargs : @args) << arg
    when :optarg
      @optargs << arg
    when :restarg
      @restarg = arg
    when :kwarg
      @kwargs << arg
    when :kwoptarg
      @kwoptargs << arg
    when :kwnilarg
      @kwnilarg = true
    when :kwrestarg
      @kwrestarg = arg
    when :shadowarg
      @shadowargs << arg
    when :blockarg
      @blockarg = arg
    else
      raise "Unsupported arg type #{arg.type}"
    end
  end
end

Public Instance Methods

can_inline_kwargs?() click to toggle source
# File lib/opal/rewriters/arguments.rb, line 56
def can_inline_kwargs?
  @optargs.empty? && @restarg.nil? && @postargs.empty?
end
has_any_kwargs?() click to toggle source
# File lib/opal/rewriters/arguments.rb, line 52
def has_any_kwargs?
  @kwargs.any? || @kwoptargs.any? || !@kwrestarg.nil?
end
has_post_args?() click to toggle source
# File lib/opal/rewriters/arguments.rb, line 48
def has_post_args?
  !@restarg.nil? || @postargs.any? || (has_any_kwargs? && !can_inline_kwargs?)
end