class RSpec::SleepingKingStudios::Support::MethodSignature

@api private

Attributes

max_arguments[R]
min_arguments[R]
optional_keywords[R]
required_keywords[R]

Public Class Methods

new(method) click to toggle source
# File lib/rspec/sleeping_king_studios/support/method_signature.rb, line 8
def initialize method
  parameters = method.parameters

  required = parameters.count { |type, _| :req  == type }
  optional = parameters.count { |type, _| :opt  == type }
  variadic = parameters.count { |type, _| :rest == type }

  @min_arguments       = required
  @max_arguments       = required + optional
  @unlimited_arguments = variadic > 0

  required = parameters.select { |type, _| :keyreq  == type }.map { |_, keyword| keyword }
  optional = parameters.select { |type, _| :key     == type }.map { |_, keyword| keyword }
  variadic = parameters.count  { |type, _| :keyrest == type }

  @required_keywords = required
  @optional_keywords = optional
  @any_keywords      = variadic > 0

  @block_argument = parameters.count { |type, _| :block == type } > 0
end

Public Instance Methods

any_keywords?() click to toggle source
# File lib/rspec/sleeping_king_studios/support/method_signature.rb, line 35
def any_keywords?
  !!@any_keywords
end
block_argument?() click to toggle source
# File lib/rspec/sleeping_king_studios/support/method_signature.rb, line 39
def block_argument?
  !!@block_argument
end
keywords() click to toggle source
# File lib/rspec/sleeping_king_studios/support/method_signature.rb, line 43
def keywords
  @optional_keywords + @required_keywords
end
unlimited_arguments?() click to toggle source
# File lib/rspec/sleeping_king_studios/support/method_signature.rb, line 47
def unlimited_arguments?
  !!@unlimited_arguments
end