class Omnibar::State

Public Class Methods

new(values = {}) click to toggle source
# File lib/omnibar/state.rb, line 3
def initialize(values = {})
  self.input = ''
  self.selection = self.cursor_offset = 0

  values.each_pair do |attr, val|
    send(:"#{attr}=", val)
  end
end

Public Instance Methods

add_to_input(string) click to toggle source
# File lib/omnibar/state.rb, line 12
def add_to_input(string)
  self.input = input.insert(input.length - cursor_offset, string)
end
backspace() click to toggle source
# File lib/omnibar/state.rb, line 16
def backspace
  input.slice!(input.length - 1 - cursor_offset)
end
current_query() click to toggle source
# File lib/omnibar/state.rb, line 44
def current_query
  visible_queries[selection] || Query.new('')
end
move_cursor_left() click to toggle source
# File lib/omnibar/state.rb, line 28
def move_cursor_left
  self.cursor_offset = [0, cursor_offset - 1].max
end
move_cursor_right() click to toggle source
# File lib/omnibar/state.rb, line 32
def move_cursor_right
  self.cursor_offset = [input.length, cursor_offset + 1].min
end
queries() click to toggle source
# File lib/omnibar/state.rb, line 36
def queries
  Omnibar.config.queries.map { |q| q.new(input) }.sort_by(&:relevance).reverse
end
results() click to toggle source

TODO: Sort results based on relevance / certainty

# File lib/omnibar/state.rb, line 49
def results
  visible_queries.map(&:preview_text)
end
select_down() click to toggle source
# File lib/omnibar/state.rb, line 24
def select_down
  self.selection = [selection + 1, visible_queries.count - 1].min
end
select_up() click to toggle source
# File lib/omnibar/state.rb, line 20
def select_up
  self.selection = [selection - 1, 0].max
end
visible_queries() click to toggle source
# File lib/omnibar/state.rb, line 40
def visible_queries
  (@qc ||= {})[input] ||= queries.reject { |q| q.preview_text.nil? }
end