Class: Twterm::Tab::New::Search

Inherits:
Object
  • Object
show all
Includes:
Readline, FilterableList, Base, Scrollable
Defined in:
lib/twterm/tab/new/search.rb

Constant Summary collapse

@@queries =
[]

Instance Attribute Summary

Attributes included from Scrollable

#scroller

Attributes included from Base

#title, #window

Instance Method Summary collapse

Methods included from FilterableList

#filter, #filter_query, #reset_filter

Methods included from Base

#close, #refresh

Constructor Details

#initializeSearch

Returns a new instance of Search.



20
21
22
23
24
25
26
# File 'lib/twterm/tab/new/search.rb', line 20

def initialize
  super

  @title = 'New tab'

  update_saved_search
end

Instance Method Details

#==(other) ⇒ Object



12
13
14
# File 'lib/twterm/tab/new/search.rb', line 12

def ==(other)
  other.is_a?(self.class)
end

#drawable_item_countObject



16
17
18
# File 'lib/twterm/tab/new/search.rb', line 16

def drawable_item_count
  (window.maxy - 6).div(3)
end

#invoke_inputObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/twterm/tab/new/search.rb', line 28

def invoke_input
  resetter = proc do
    reset_prog_mode
    sleep 0.1
    Screen.instance.refresh
  end

  input_thread = Thread.new do
    close_screen
    CompletionManager.instance.set_default_mode!
    puts "\ninput search query"
    query = (readline('> ') || '').strip
    resetter.call

    tab = query.nil? || query.empty? ? Tab::New::Search.new : Tab::SearchTab.new(query)
    TabManager.instance.switch(tab)
  end

  App.instance.register_interruption_handler do
    input_thread.kill
    resetter.call
    tab = Tab::New::Search.new
    TabManager.instance.switch(tab)
  end

  input_thread.join
end

#itemsObject



56
57
58
59
60
61
62
# File 'lib/twterm/tab/new/search.rb', line 56

def items
  if filter_query.empty?
    ['<Input search query>'] + @@queries
  else
    @@queries.select { |q| q.matches?(filter_query) }
  end
end

#respond_to_key(key) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/twterm/tab/new/search.rb', line 64

def respond_to_key(key)
  case key
  when ?d, 4
    10.times { scroller.move_down }
  when ?g
    scroller.move_to_top
  when ?G
    scroller.move_to_bottom
  when 10
    open_search_tab_with_current_query
  when ?j, 14, Curses::Key::DOWN
    scroller.move_down
  when ?k, 16, Curses::Key::UP
    scroller.move_up
  when ?u, 21
    10.times { scroller.move_up }
  when ?q
    reset_filter
  when ?/
    filter
  else
    return false
  end

  true
end

#total_item_countObject Also known as: count



91
92
93
# File 'lib/twterm/tab/new/search.rb', line 91

def total_item_count
  items.count
end