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
- .best_match(overloads, arg_count, param_names) ⇒ (Object, Integer)?
- .select(overloads, arg_count:, param_names: []) ⇒ Object?
Class Method Details
.best_match(overloads, arg_count, param_names) ⇒ (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?
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 |