Class: UI::ListSearch

Inherits:
Object
  • Object
show all
Defined in:
lib/ektoplayer/ui/widgets/listwidget.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(search: '', direction: :down) ⇒ ListSearch

Returns a new instance of ListSearch.



41
42
43
# File 'lib/ektoplayer/ui/widgets/listwidget.rb', line 41

def initialize(search: '', direction: :down)
   @search, @direction = search, direction
end

Instance Attribute Details

#directionObject

Returns the value of attribute direction.



39
40
41
# File 'lib/ektoplayer/ui/widgets/listwidget.rb', line 39

def direction
  @direction
end

Instance Method Details

#next(*a) ⇒ Object



61
# File 'lib/ektoplayer/ui/widgets/listwidget.rb', line 61

def next(*a)  @direction == :up ? search_up(*a): search_down(*a)  end

#prev(*a) ⇒ Object



62
# File 'lib/ektoplayer/ui/widgets/listwidget.rb', line 62

def prev(*a)  @direction == :up ? search_down(*a) : search_up(*a) end

#search=(search) ⇒ Object



45
46
47
# File 'lib/ektoplayer/ui/widgets/listwidget.rb', line 45

def search=(search)
   @search = Regexp.new(search.downcase) rescue search.downcase
end

#search_down(current_pos, source) ⇒ Object



74
75
76
77
78
79
80
81
82
# File 'lib/ektoplayer/ui/widgets/listwidget.rb', line 74

def search_down(current_pos, source)
   start_pos = (current_pos + 1).clamp(0, source.size)

   start_pos.upto(source.size).each do |i|
      return i if comp(source[i])
   end

   0
end

#search_up(current_pos, source) ⇒ Object



64
65
66
67
68
69
70
71
72
# File 'lib/ektoplayer/ui/widgets/listwidget.rb', line 64

def search_up(current_pos, source)
   start_pos = (current_pos - 1).clamp(0, source.size)

   start_pos.downto(0).each do |i|
      return i if comp(source[i])
   end

   source.size
end