Class: TTY2::Prompt::SelectedChoices Private
- Inherits:
-
Object
- Object
- TTY2::Prompt::SelectedChoices
- Includes:
- Enumerable
- Defined in:
- lib/tty2/prompt/selected_choices.rb
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Instance Attribute Summary collapse
- #size ⇒ Object readonly private
Instance Method Summary collapse
-
#clear ⇒ Object
Clear selected choices.
-
#delete_at(index) ⇒ Choice
Delete choice at index.
-
#each(&block) ⇒ Object
Iterate over selected choices.
- #find_index_by(&search) ⇒ Object private
-
#initialize(selected = [], indexes = []) ⇒ SelectedChoices
constructor
Create selected choices.
-
#insert(index, choice) ⇒ Object
Insert choice at index.
Constructor Details
#initialize(selected = [], indexes = []) ⇒ SelectedChoices
Create selected choices
17 18 19 20 21 |
# File 'lib/tty2/prompt/selected_choices.rb', line 17 def initialize(selected = [], indexes = []) @selected = selected @indexes = indexes @size = @selected.size end |
Instance Attribute Details
#size ⇒ Object (readonly)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
9 10 11 |
# File 'lib/tty2/prompt/selected_choices.rb', line 9 def size @size end |
Instance Method Details
#clear ⇒ Object
Clear selected choices
26 27 28 29 30 |
# File 'lib/tty2/prompt/selected_choices.rb', line 26 def clear @indexes.clear @selected.clear @size = 0 end |
#delete_at(index) ⇒ Choice
Delete choice at index
62 63 64 65 66 67 68 69 70 |
# File 'lib/tty2/prompt/selected_choices.rb', line 62 def delete_at(index) delete_idx = @indexes.each_index.find { |i| index == @indexes[i] } return nil unless delete_idx @indexes.delete_at(delete_idx) choice = @selected.delete_at(delete_idx) @size -= 1 choice end |
#each(&block) ⇒ Object
Iterate over selected choices
35 36 37 38 39 |
# File 'lib/tty2/prompt/selected_choices.rb', line 35 def each(&block) return to_enum unless block_given? @selected.each(&block) end |
#find_index_by(&search) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
72 73 74 |
# File 'lib/tty2/prompt/selected_choices.rb', line 72 def find_index_by(&search) (0...@size).bsearch(&search) end |
#insert(index, choice) ⇒ Object
Insert choice at index
47 48 49 50 51 52 53 54 |
# File 'lib/tty2/prompt/selected_choices.rb', line 47 def insert(index, choice) insert_idx = find_index_by { |i| index < @indexes[i] } insert_idx ||= -1 @indexes.insert(insert_idx, index) @selected.insert(insert_idx, choice) @size += 1 self end |