Sha256: 0a7b1482db58e5de893304cafdf7bcc25ffcb15d48f6507f4c3b742657bdf1d3

Contents?: true

Size: 1.42 KB

Versions: 26

Compression:

Stored size: 1.42 KB

Contents

# frozen_string_literal: true

module Opal
  module Nodes
    module Args
      class Parameters
        def initialize(args)
          @args = args.children
        end

        def to_code
          stringified_parameters = @args.map do |arg|
            public_send(:"on_#{arg.type}", *arg)
          end

          "[#{stringified_parameters.compact.join(', ')}]"
        end

        def on_arg(arg_name)
          %{['req', '#{arg_name}']}
        end

        def on_mlhs(*)
          %{['req']}
        end

        def on_optarg(arg_name, _default_value)
          %{['opt', '#{arg_name}']}
        end

        def on_restarg(arg_name = nil)
          if arg_name
            arg_name = :* if arg_name == :fwd_rest_arg
            %{['rest', '#{arg_name}']}
          else
            %{['rest']}
          end
        end

        def on_kwarg(arg_name)
          %{['keyreq', '#{arg_name}']}
        end

        def on_kwoptarg(arg_name, _default_value)
          %{['key', '#{arg_name}']}
        end

        def on_kwrestarg(arg_name = nil)
          if arg_name
            %{['keyrest', '#{arg_name}']}
          else
            %{['keyrest']}
          end
        end

        def on_blockarg(arg_name)
          arg_name = :& if arg_name == :fwd_block_arg
          %{['block', '#{arg_name}']}
        end

        def on_kwnilarg
          %{['nokey']}
        end

        def on_shadowarg(_arg_name); end
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
opal-1.8.0 lib/opal/nodes/args/parameters.rb
opal-1.8.0.beta1 lib/opal/nodes/args/parameters.rb
opal-1.7.4 lib/opal/nodes/args/parameters.rb
opal-1.8.0.alpha1 lib/opal/nodes/args/parameters.rb
opal-1.7.3 lib/opal/nodes/args/parameters.rb
opal-1.7.2 lib/opal/nodes/args/parameters.rb
opal-1.7.1 lib/opal/nodes/args/parameters.rb
opal-1.7.0 lib/opal/nodes/args/parameters.rb
opal-1.7.0.rc1 lib/opal/nodes/args/parameters.rb
opal-1.6.1 lib/opal/nodes/args/parameters.rb
opal-1.6.0 lib/opal/nodes/args/parameters.rb
opal-1.6.0.rc1 lib/opal/nodes/args/parameters.rb
opal-1.6.0.alpha1 lib/opal/nodes/args/parameters.rb
opal-1.5.1 lib/opal/nodes/args/parameters.rb
opal-1.5.0 lib/opal/nodes/args/parameters.rb
opal-1.5.0.rc1 lib/opal/nodes/args/parameters.rb
opal-1.4.1 lib/opal/nodes/args/parameters.rb
opal-1.4.0 lib/opal/nodes/args/parameters.rb
opal-1.4.0.alpha1 lib/opal/nodes/args/parameters.rb
opal-1.3.2 lib/opal/nodes/args/parameters.rb