class RubyNext::Language::Rewriters::NumberedParams

Constants

MIN_SUPPORTED_VERSION
NAME
SYNTAX_PROBE

Public Instance Methods

on_numblock(node) click to toggle source
# File lib/ruby-next/language/rewriters/numbered_params.rb, line 13
def on_numblock(node)
  context.track! self

  proc_or_lambda, num, body = *node.children

  if proc_or_lambda.type == :lambda
    insert_before(node.loc.begin, "(#{proc_args_str(num)})")
  else
    insert_after(node.loc.begin, " |#{proc_args_str(num)}|")
  end

  node.updated(
    :block,
    [
      proc_or_lambda,
      proc_args(num),
      body
    ]
  )
end

Private Instance Methods

proc_args(n) click to toggle source
# File lib/ruby-next/language/rewriters/numbered_params.rb, line 40
def proc_args(n)
  return s(:args, s(:procarg0, s(:arg, :_1))) if n == 1

  (1..n).map do |numero|
    s(:arg, :"_#{numero}")
  end.then do |args|
    s(:args, *args)
  end
end
proc_args_str(n) click to toggle source
# File lib/ruby-next/language/rewriters/numbered_params.rb, line 36
def proc_args_str(n)
  (1..n).map { |numero| "_#{numero}" }.join(", ")
end