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
permalink #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 83 84 85 86 |
# File 'lib/cli/ui/prompt/interactive_options.rb', line 60 def initialize(, multiple: false, default: nil) = @active = if default && (i = .index(default)) i + 1 else 1 end @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 = false @filter = '' # 0-indexed array representing if selected # @options[0] is selected if @chosen[0] if multiple @chosen = if default .map { |option| default.include?(option) } else Array.new(.size) { false } end end @redraw = true = T.let([], T::Array[[String, T.nilable(Integer)]]) end |
Class Method Details
permalink .call(options, multiple: false, default: nil) ⇒ Object
[View source] [View on GitHub]
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
permalink #call ⇒ Object
[View source] [View on GitHub]
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/cli/ui/prompt/interactive_options.rb', line 92 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 |