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

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

Constant Summary collapse

@@queries =
[]

Instance Attribute Summary

Attributes included from Scrollable

#scroller

Attributes inherited from Base

#window

Instance Method Summary collapse

Methods included from FilterableList

#filter, #filter_query, #reset_filter

Methods included from Publisher

#publish

Methods included from Utils

check_type

Methods inherited from Base

#close, #refresh

Methods included from Subscriber

included, #subscribe, #unsubscribe

Constructor Details

#initializeSearch

Returns a new instance of Search.



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

def initialize
  super

  update_saved_search
end

Instance Method Details

#==(other) ⇒ Object



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

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

#drawable_item_countObject



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

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

#invoke_inputObject



27
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
# File 'lib/twterm/tab/new/search.rb', line 27

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::Statuses::Search.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



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

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



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/twterm/tab/new/search.rb', line 63

def respond_to_key(key)
  return true if scroller.respond_to_key(key)

  case key
  when 10
    open_search_tab_with_current_query
  when ?q
    reset_filter
  when ?/
    filter
  else
    return false
  end

  true
end

#titleObject



80
81
82
# File 'lib/twterm/tab/new/search.rb', line 80

def title
  'New tab'.freeze
end

#total_item_countObject Also known as: count



84
85
86
# File 'lib/twterm/tab/new/search.rb', line 84

def total_item_count
  items.count
end