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