class Opal::Rewriters::InlineArgs

Converts

def m( a, b = 1, *c, d, e:, f: 1, **g, &blk )
end

To something like

def m( a, <fake b>, <fake c>, <fake d>, <fake kwargs>)
  blk = <extract block>
  $post_args = arguments[1..-1]
  $kwargs = $post_args.pop
  a = <enough args> ? $post_args.shift : 1
  c = <enough args> ? $post_args[0..-1] : []
  d = $post_args.last
  e = $kwargs.delete(:e)
  f = $kwargs.delete(:f) || 1
  g = $kwargs.except(:e, :f)
end

Public Instance Methods

on_def(node) click to toggle source
Calls superclass method
# File lib/opal/rewriters/inline_args.rb, line 28
def on_def(node)
  node = super(node)
  mid, args, body = *node

  body ||= s(:nil) # prevent returning initialization statement

  initializer = Initializer.new(args, type: :def)
  inline_args = args.updated(nil, initializer.inline)
  body = prepend_to_body(body, initializer.initialization)

  node.updated(nil, [mid, inline_args, body])
end
on_defs(node) click to toggle source
Calls superclass method
# File lib/opal/rewriters/inline_args.rb, line 41
def on_defs(node)
  node = super(node)
  recv, mid, args, body = *node

  body ||= s(:nil) # prevent returning initialization statement

  initializer = Initializer.new(args, type: :defs)
  inline_args = args.updated(nil, initializer.inline)
  body = prepend_to_body(body, initializer.initialization)

  node.updated(nil, [recv, mid, inline_args, body])
end
on_iter(node) click to toggle source
Calls superclass method
# File lib/opal/rewriters/inline_args.rb, line 54
def on_iter(node)
  node = super(node)
  args, body = *node

  body ||= s(:nil) # prevent returning initialization statement

  initializer = Initializer.new(args, type: :iter)
  inline_args = args.updated(nil, initializer.inline)
  body = prepend_to_body(body, initializer.initialization)

  node.updated(nil, [inline_args, body])
end