module Solargraph::YardMap::ToMethod::InnerMethods

Public Instance Methods

arg_name(a) click to toggle source

@param a [Array] @return [String]

# File lib/solargraph/yard_map/to_method.rb, line 31
def arg_name a
  a[0].gsub(/[^a-z0-9_]/i, '')
end
arg_type(a) click to toggle source

@param a [Array] @return [::Symbol]

# File lib/solargraph/yard_map/to_method.rb, line 37
def arg_type a
  if a[0].start_with?('**')
    :kwrestarg
  elsif a[0].start_with?('*')
    :restarg
  elsif a[0].start_with?('&')
    :blockarg
  elsif a[0].end_with?(':')
    a[1] ? :kwoptarg : :kwarg
  elsif a[1]
    :optarg
  else
    :arg
  end
end
get_parameters(code_object, location, comments) click to toggle source

@param code_object [YARD::CodeObjects::Base] @return [Array<Solargraph::Pin::Parameter>]

# File lib/solargraph/yard_map/to_method.rb, line 11
def get_parameters code_object, location, comments
  return [] unless code_object.is_a?(YARD::CodeObjects::MethodObject)
  # HACK: Skip `nil` and `self` parameters that are sometimes emitted
  # for methods defined in C
  # See https://github.com/castwide/solargraph/issues/345
  code_object.parameters.select { |a| a[0] && a[0] != 'self' }.map do |a|
    Solargraph::Pin::Parameter.new(
      location: location,
      closure: self,
      comments: comments,
      name: arg_name(a),
      presence: nil,
      decl: arg_type(a),
      asgn_code: a[1]
    )
  end
end