Class: CLI::UI::Prompt::InteractiveOptions
- Inherits:
-
Object
- Object
- CLI::UI::Prompt::InteractiveOptions
- Extended by:
- T::Sig
- Defined in:
- lib/cli/ui/prompt/interactive_options.rb
Constant Summary collapse
- DONE =
'Done'
- CHECKBOX_ICON =
{ false => '☐', true => '☑' }
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(options, multiple: false, default: nil) ⇒ InteractiveOptions
constructor
A new instance of InteractiveOptions.
Methods included from T::Sig
Constructor Details
#initialize(options, multiple: false, default: nil) ⇒ InteractiveOptions
Returns a new instance of InteractiveOptions.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/cli/ui/prompt/interactive_options.rb', line 60 def initialize(, multiple: false, default: nil) @options = @active = 1 @marker = '>' @answer = nil @state = :root @multiple = multiple # Indicate that an extra line (the "metadata" line) is present and # the terminal output should be drawn over when processing user input @displaying_metadata = false @filter = '' # 0-indexed array representing if selected # @options[0] is selected if @chosen[0] if multiple @chosen = if default @options.map { |option| default.include?(option) } else Array.new(@options.size) { false } end end @redraw = true @presented_options = T.let([], T::Array[[String, T.nilable(Integer)]]) end |
Class Method Details
.call(options, multiple: false, default: nil) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/cli/ui/prompt/interactive_options.rb', line 37 def call(, multiple: false, default: nil) list = new(, multiple: multiple, default: default) selected = list.call case selected when Array selected.map { |s| T.must([s - 1]) } else T.must([selected - 1]) end end |
Instance Method Details
#call ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/cli/ui/prompt/interactive_options.rb', line 88 def call calculate_option_line_lengths CLI::UI.raw { print(ANSI.hide_cursor) } while @answer.nil? process_input_until_redraw_required reset_position end clear_output @answer ensure CLI::UI.raw do print(ANSI.show_cursor) end end |