Class: TTY2::Prompt::Suggestion

Inherits:
Object
  • Object
show all
Defined in:
lib/tty2/prompt/suggestion.rb

Overview

A class representing a suggestion out of possible choices

Constant Summary collapse

DEFAULT_INDENT =
8
SINGLE_TEXT =
"Did you mean this?"
PLURAL_TEXT =
"Did you mean one of these?"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**options) ⇒ Suggestion

Initialize a Suggestion



36
37
38
39
40
41
42
# File 'lib/tty2/prompt/suggestion.rb', line 36

def initialize(**options)
  @indent      = options.fetch(:indent) { DEFAULT_INDENT }
  @single_text = options.fetch(:single_text) { SINGLE_TEXT }
  @plural_text = options.fetch(:plural_text) { PLURAL_TEXT }
  @suggestions = []
  @comparator  = Distance.new
end

Instance Attribute Details

#indentObject (readonly)

Number of spaces



21
22
23
# File 'lib/tty2/prompt/suggestion.rb', line 21

def indent
  @indent
end

#plural_textObject (readonly)

Text for multiple suggestions



31
32
33
# File 'lib/tty2/prompt/suggestion.rb', line 31

def plural_text
  @plural_text
end

#single_textObject (readonly)

Text for a single suggestion



26
27
28
# File 'lib/tty2/prompt/suggestion.rb', line 26

def single_text
  @single_text
end

Instance Method Details

#suggest(message, possibilities) ⇒ Object

Suggest matches out of possibile strings

Parameters:

  • message (String)
  • possibilities (Array[String])


51
52
53
54
55
56
57
58
59
60
# File 'lib/tty2/prompt/suggestion.rb', line 51

def suggest(message, possibilities)
  distances        = measure_distances(message, possibilities)
  minimum_distance = distances.keys.min
  max_distance     = distances.keys.max

  if minimum_distance < max_distance
    @suggestions = distances[minimum_distance].sort
  end
  evaluate
end