Sha256: 3ac95b39daccd58ed92d30eefdc1b9f80dfae11df2e6df201024ca2d2db23f33

Contents?: true

Size: 810 Bytes

Versions: 2

Compression:

Stored size: 810 Bytes

Contents

# frozen_string_literal: true

using RubyNext

module RubyNext
  module Language
    module Rewriters
      class NumberedParams < Base
        SYNTAX_PROBE = "proc { _1 }.call(1)"
        MIN_SUPPORTED_VERSION = Gem::Version.new("2.7.0")

        def on_numblock(node)
          context.track! self

          proc_or_lambda, num, *rest = *node.children

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

        private

        def proc_args(n)
          return s(:args, s(:procarg0, :_1)) if n == 1

          (1..n).map do |numero|
            s(:arg, :"_#{numero}")
          end.then do |args|
            s(:args, *args)
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ruby-next-0.1.1 lib/ruby-next/language/rewriters/numbered_params.rb
ruby-next-0.1.0 lib/ruby-next/language/rewriters/numbered_params.rb