Module: Docscribe::Types::OverloadSelector

Defined in:
lib/docscribe/types/overload_selector.rb

Overview

Selects best matching overload from RBS signatures for given arguments.

Class Method Summary collapse

Class Method Details

.best_match(overloads, arg_count, param_names) ⇒ (Object, Integer)?

Parameters:

  • overloads (Array<Object>)
  • arg_count (Integer)
  • param_names (Array<String>)

Returns:

  • ((Object, Integer)?)


24
25
26
27
# File 'lib/docscribe/types/overload_selector.rb', line 24

def best_match(overloads, arg_count, param_names)
  candidates = overloads.map { |sig| score_signature(sig, arg_count: arg_count, param_names: param_names) }
  candidates.compact.max_by { |_sig, score| score }
end

.select(overloads, arg_count:, param_names: []) ⇒ Object?

Parameters:

  • overloads (Array<Object>)
  • arg_count (Integer)
  • param_names (Array<String>) (defaults to: [])

Returns:

  • (Object?)


12
13
14
15
16
17
18
# File 'lib/docscribe/types/overload_selector.rb', line 12

def select(overloads, arg_count:, param_names: [])
  return nil if overloads.nil? || overloads.empty?
  return overloads.first if overloads.size == 1

  best = best_match(overloads, arg_count, param_names)
  best&.first || overloads.first
end