Class: ConvenientService::Utils::Method::LooseCall::Signature Private

Inherits:
Object
  • Object
show all
Defined in:
lib/convenient_service/utils/method/loose_call.rb

Overview

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Examples:

All possible parameters values in Ruby 2.7.

class Example
  def m1(); end
  def m2(a); end
  def m3(a = 0); end
  def m4(a, b); end
  def m5(a, b = 1); end
  def m6(a = 0, b = 1); end
  def m7(*args); end
  def m8(a:); end
  def m9(a: 0); end
  def m10(a:, b:); end
  def m11(a:, b: 1); end
  def m12(a: 0, b: 1); end
  def m13(**kwargs); end
  def m14(&block); end
end

object = Example.new

# def m1(); end
p object.method(:m1).parameters
# => []

# def m2(a); end
p object.method(:m2).parameters
# => [[:req, :a]]

# def m3(a = 0); end
p object.method(:m3).parameters
# => [[:opt, :a]]

# def m4(a, b); end
p object.method(:m4).parameters
# => [[:req, :a], [:req, :b]]

# def m5(a, b = 1); end
p object.method(:m5).parameters
# => [[:req, :a], [:opt, :b]]

# def m6(a = 0, b = 1); end
p object.method(:m6).parameters
# => [[:opt, :a], [:opt, :b]]

# def m7(*args); end
p object.method(:m7).parameters
# => [[:rest, :args]]

# def m8(a:); end
p object.method(:m8).parameters
# => [[:keyreq, :a]]

# def m9(a: 0); end
p object.method(:m9).parameters
# => [[:key, :a]]

# def m10(a:, b:); end
p object.method(:m10).parameters
# => [[:keyreq, :a], [:keyreq, :b]]

# def m11(a:, b: 1); end
p object.method(:m11).parameters
# => [[:keyreq, :a], [:key, :b]]

# def m12(a: 0, b: 1); end
p object.method(:m12).parameters
# => [[:key, :a], [:key, :b]]

# def m13(**kwargs); end
p object.method(:m13).parameters
# => [[:keyrest, :kwargs]]

# def m14(&block); end
p object.method(:m14).parameters
# => [[:block, :block]]

All possible parameters values in Ruby 4.0.

class Example
  def m1(); end
  def m2(a); end
  def m3(a = 0); end
  def m4(a, b); end
  def m5(a, b = 1); end
  def m6(a = 0, b = 1); end
  def m7(*args); end
  def m8(a:); end
  def m9(a: 0); end
  def m10(a:, b:); end
  def m11(a:, b: 1); end
  def m12(a: 0, b: 1); end
  def m13(**kwargs); end
  def m14(&block); end
end

object = Example.new

# def m1(); end
p object.method(:m1).parameters
# => []

# def m2(a); end
p object.method(:m2).parameters
# => [[:req, :a]]

# def m3(a = 0); end
p object.method(:m3).parameters
# => [[:opt, :a]]

# def m4(a, b); end
p object.method(:m4).parameters
# => [[:req, :a], [:req, :b]]

# def m5(a, b = 1); end
p object.method(:m5).parameters
# => [[:req, :a], [:opt, :b]]

# def m6(a = 0, b = 1); end
p object.method(:m6).parameters
# => [[:opt, :a], [:opt, :b]]

# def m7(*args); end
p object.method(:m7).parameters
# => [[:rest, :args]]

# def m8(a:); end
p object.method(:m8).parameters
# => [[:keyreq, :a]]

# def m9(a: 0); end
p object.method(:m9).parameters
# => [[:key, :a]]

# def m10(a:, b:); end
p object.method(:m10).parameters
# => [[:keyreq, :a], [:keyreq, :b]]

# def m11(a:, b: 1); end
p object.method(:m11).parameters
# => [[:keyreq, :a], [:key, :b]]

# def m12(a: 0, b: 1); end
p object.method(:m12).parameters
# => [[:key, :a], [:key, :b]]

# def m13(**kwargs); end
p object.method(:m13).parameters
# => [[:keyrest, :kwargs]]

# def m14(&block); end
p object.method(:m14).parameters
# => [[:block, :block]]

Since:

  • 1.0.0

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parameters) ⇒ void

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

Since:

  • 1.0.0



176
177
178
# File 'lib/convenient_service/utils/method/loose_call.rb', line 176

def initialize(parameters)
  @parameters = parameters
end

Instance Attribute Details

#parametersObject (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Since:

  • 1.0.0



170
171
172
# File 'lib/convenient_service/utils/method/loose_call.rb', line 170

def parameters
  @parameters
end

Instance Method Details

#argsArray<Symbol>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

Since:

  • 1.0.0



183
184
185
# File 'lib/convenient_service/utils/method/loose_call.rb', line 183

def args
  parsed_parameters[:args].to_a
end

#args_rest?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)

Since:

  • 1.0.0



204
205
206
# File 'lib/convenient_service/utils/method/loose_call.rb', line 204

def args_rest?
  parsed_parameters.has_key?(:args_rest)
end

#block?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)

Since:

  • 1.0.0



218
219
220
# File 'lib/convenient_service/utils/method/loose_call.rb', line 218

def block?
  parsed_parameters.has_key?(:block)
end

#kwargsHash{Symbol => Object}

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

Since:

  • 1.0.0



190
191
192
# File 'lib/convenient_service/utils/method/loose_call.rb', line 190

def kwargs
  parsed_parameters[:kwargs].to_a
end

#kwargs_namesSymbol

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Symbol)

Since:

  • 1.0.0



197
198
199
# File 'lib/convenient_service/utils/method/loose_call.rb', line 197

def kwargs_names
  @kwargs_names ||= kwargs.map { |_, name| name }
end

#kwargs_rest?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)

Since:

  • 1.0.0



211
212
213
# File 'lib/convenient_service/utils/method/loose_call.rb', line 211

def kwargs_rest?
  parsed_parameters.has_key?(:kwargs_rest)
end

#loose_args_from(regular_args) ⇒ Array<Object>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

Returns:

Since:

  • 1.0.0



226
227
228
# File 'lib/convenient_service/utils/method/loose_call.rb', line 226

def loose_args_from(regular_args)
  args_rest? ? regular_args : regular_args.take(args.size)
end

#loose_block_from(regular_block) ⇒ Proc?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • regular_block (Proc, nil)

Returns:

Since:

  • 1.0.0



242
243
244
# File 'lib/convenient_service/utils/method/loose_call.rb', line 242

def loose_block_from(regular_block)
  block? ? regular_block : nil
end

#loose_kwargs_from(regular_kwargs) ⇒ Hash{Symbol => Object}

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

Returns:

Since:

  • 1.0.0



234
235
236
# File 'lib/convenient_service/utils/method/loose_call.rb', line 234

def loose_kwargs_from(regular_kwargs)
  kwargs_rest? ? regular_kwargs : regular_kwargs.slice(*kwargs_names)
end