class Pry::Command::ShowInfo

Private Instance Methods

build_signature_string(signature) click to toggle source
# File lib/pry-sorbet/extensions.rb, line 31
def build_signature_string(signature)
  call_chain = []

  # Modifiers
  if signature.mode != "standard"
    # This is a string like "overridable_override"
    call_chain += signature.mode.split("_")
  end

  # Parameters
  all_parameters = []

  #   Positional
  all_parameters += signature.arg_types.map do |(name, type)|
    "#{name}: #{type}"
  end

  #   Splat
  if signature.rest_type
    all_parameters << "#{signature.rest_name}: #{signature.rest_type}"
  end

  #   Keyword
  all_parameters += signature.kwarg_types.map do |(name, type)|
    "#{name}: #{type}"
  end

  #   Double-splat
  if signature.rest_type
    all_parameters << "#{signature.keyrest_name}: #{signature.keyrest_type}"
  end

  #   Block
  if signature.block_type
    all_parameters << "#{signature.block_name}: #{signature.block_type}"
  end

  call_chain << "params(#{all_parameters.join(", ")})" if all_parameters.any?

  # Returns
  if signature.return_type.is_a?(T::Private::Types::Void)
    call_chain << "void"
  else
    call_chain << "returns(#{signature.return_type})"
  end

  "sig { #{call_chain.join(".")} }"
end