lib/ollama/utils/chooser.rb in ollama-ruby-0.11.0 vs lib/ollama/utils/chooser.rb in ollama-ruby-0.12.0
- old
+ new
@@ -6,10 +6,24 @@
include SearchUI
include Term::ANSIColor
module_function
- def choose(entries, prompt: 'Search? %s')
+ # The choose method presents a list of entries and prompts the user
+ # for input, allowing them to select one entry based on their input.
+ #
+ # @param entries [Array] the list of entries to present to the user
+ # @param prompt [String] the prompt message to display when asking for input (default: 'Search? %s')
+ # @param return_immediately [Boolean] whether to immediately return the first entry if there is only one or nil when there is none (default: false)
+ #
+ # @return [Object] the selected entry, or nil if no entry was chosen
+ #
+ # @example
+ # choose(['entry1', 'entry2'], prompt: 'Choose an option:')
+ def choose(entries, prompt: 'Search? %s', return_immediately: false)
+ if return_immediately && entries.size <= 1
+ return entries.first
+ end
entry = Search.new(
prompt:,
match: -> answer {
matcher = Amatch::PairDistance.new(answer.downcase)
matches = entries.map { |n| [ n, -matcher.similar(n.to_s.downcase) ] }.