class Opal::Rewriters::ForwardArgs

Public Instance Methods

on_args(node) click to toggle source
Calls superclass method
# File lib/opal/rewriters/forward_args.rb, line 38
def on_args(node)
  if node.children.last && node.children.last.type == :forward_arg
    prev_children = node.children[0..-2]

    super(node.updated(nil,
      [
        *prev_children,
        s(:restarg, '$fwd_rest'),
        s(:blockarg, '$fwd_block')
      ]
    ))
  else
    super
  end
end
on_block_pass(node) click to toggle source
Calls superclass method
# File lib/opal/rewriters/forward_args.rb, line 26
def on_block_pass(node)
  if !node.children.first
    process(
      node.updated(nil,
        [s(:lvar, '$fwd_block')]
      )
    )
  else
    super
  end
end
on_blockarg(node) click to toggle source
Calls superclass method
# File lib/opal/rewriters/forward_args.rb, line 70
def on_blockarg(node)
  if !node.children.first
    node.updated(nil, ['$fwd_block'])
  else
    super
  end
end
on_forward_args(_node) click to toggle source
# File lib/opal/rewriters/forward_args.rb, line 8
def on_forward_args(_node)
  process(
    s(:args, s(:forward_arg, :"$"))
  )
end
on_forwarded_kwrestarg(_node) click to toggle source
# File lib/opal/rewriters/forward_args.rb, line 20
def on_forwarded_kwrestarg(_node)
  process(
    s(:kwsplat, s(:lvar, '$fwd_kwrest'))
  )
end
on_forwarded_restarg(_node) click to toggle source
# File lib/opal/rewriters/forward_args.rb, line 14
def on_forwarded_restarg(_node)
  process(
    s(:splat, s(:lvar, '$fwd_rest'))
  )
end
on_kwrestarg(node) click to toggle source
Calls superclass method
# File lib/opal/rewriters/forward_args.rb, line 62
def on_kwrestarg(node)
  if !node.children.first
    node.updated(nil, ['$fwd_kwrest'])
  else
    super
  end
end
on_restarg(node) click to toggle source
Calls superclass method
# File lib/opal/rewriters/forward_args.rb, line 54
def on_restarg(node)
  if !node.children.first
    node.updated(nil, ['$fwd_rest'])
  else
    super
  end
end
on_send(node) click to toggle source
Calls superclass method
# File lib/opal/rewriters/forward_args.rb, line 78
def on_send(node)
  if node.children.last &&
     node.children.last.class != Symbol &&
     node.children.last.type == :forwarded_args

    prev_children = node.children[0..-2]

    super(node.updated(nil,
      [
        *prev_children,
        s(:splat,
          s(:lvar, '$fwd_rest')
        ),
        s(:block_pass,
          s(:lvar, '$fwd_block')
        )
      ]
    ))
  else
    super
  end
end