class DuckTesting::YARD::MethodObject

Encapsulate ‘YARD::CodeObjects::MethodObject`.

Public Instance Methods

expected_return_types() click to toggle source

@return [Array<DuckTesting::Type::Base>]

# File lib/duck_testing/yard/method_object.rb, line 53
def expected_return_types
  return_tag ? DuckTesting::YARD.expected_types(return_tag.types) : []
end
keyword_parameters() click to toggle source

@return [Array<DuckTesting::YARD::MethodParameter>]

# File lib/duck_testing/yard/method_object.rb, line 43
def keyword_parameters
  method_parameters.select(&:keyword?)
end
method_parameters() click to toggle source

@return [Array<DuckTesting::YARD::MethodParameter>]

# File lib/duck_testing/yard/method_object.rb, line 23
def method_parameters
  @method_parameters ||= begin
    if yard_object.parameters.any?
      yard_object.parameters.map do |name, default|
        MethodParameter.new(self, name, default, get_parameter_tag(name))
      end
    elsif parameter_tags.any?
      # Maybe the method is defined using a DSL and its signature is
      # declared with "@!method" directive.
      parameter_tags.map do |tag|
        MethodParameter.new(self, tag.name, nil, tag)
      end
    else
      # The method does not take any arguments.
      []
    end
  end
end
public_class_method?() click to toggle source

@return [Boolean]

# File lib/duck_testing/yard/method_object.rb, line 63
def public_class_method?
  yard_object.scope == :class
end
public_instance_method?() click to toggle source

@return [Boolean]

# File lib/duck_testing/yard/method_object.rb, line 58
def public_instance_method?
  yard_object.scope == :instance
end
return_tag() click to toggle source

@return [YARD::Tags::Tag]

# File lib/duck_testing/yard/method_object.rb, line 48
def return_tag
  @return_tag ||= yard_object.tags.find { |tag| tag.tag_name == "return" }
end
signature() click to toggle source

@return [String]

# File lib/duck_testing/yard/method_object.rb, line 18
def signature
  "#{name}(#{parameters_signature})"
end

Private Instance Methods

get_parameter_tag(name) click to toggle source

@return [YARD::Tags::Tag]

# File lib/duck_testing/yard/method_object.rb, line 75
def get_parameter_tag(name)
  parameter_tags.find do |tag|
    name == (name.end_with?(":") ? "#{tag.name}:" : tag.name)
  end
end
parameter_tags() click to toggle source

@return [Array<YARD::Tags::Tag>]

# File lib/duck_testing/yard/method_object.rb, line 82
def parameter_tags
  @parameter_tags ||= yard_object.tags.select { |tag| tag.tag_name == "param" }
end
parameters_signature() click to toggle source

@return [String]

# File lib/duck_testing/yard/method_object.rb, line 70
def parameters_signature
  method_parameters.map(&:to_s).join(", ")
end