Sha256: e656c8487c12d0db3db7a2b12cb58e952986482f2955333f1b8a1ac734a8f5bd

Contents?: true

Size: 1.12 KB

Versions: 17

Compression:

Stored size: 1.12 KB

Contents

# frozen_string_literal: true

require 'opal/rewriters/base'

module Opal
  module Rewriters
    class ForwardArgs < Base
      def on_forward_args(_node)
        process(
          s(:args, s(:forward_arg, :"$"))
        )
      end

      def on_args(node)
        if node.children.last && node.children.last.type == :forward_arg
          prev_children = node.children[0..-2]

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

      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]

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

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
opal-1.6.1 lib/opal/rewriters/forward_args.rb
opal-1.6.0 lib/opal/rewriters/forward_args.rb
opal-1.6.0.rc1 lib/opal/rewriters/forward_args.rb
opal-1.6.0.alpha1 lib/opal/rewriters/forward_args.rb
opal-1.5.1 lib/opal/rewriters/forward_args.rb
opal-1.5.0 lib/opal/rewriters/forward_args.rb
opal-1.5.0.rc1 lib/opal/rewriters/forward_args.rb
opal-1.4.1 lib/opal/rewriters/forward_args.rb
opal-1.4.0 lib/opal/rewriters/forward_args.rb
opal-1.4.0.alpha1 lib/opal/rewriters/forward_args.rb
opal-1.3.2 lib/opal/rewriters/forward_args.rb
opal-1.3.1 lib/opal/rewriters/forward_args.rb
opal-1.3.0 lib/opal/rewriters/forward_args.rb
opal-1.3.0.rc1 lib/opal/rewriters/forward_args.rb
opal-1.3.0.alpha1 lib/opal/rewriters/forward_args.rb
opal-1.2.0 lib/opal/rewriters/forward_args.rb
opal-1.2.0.beta1 lib/opal/rewriters/forward_args.rb