class Doublespeak::Repl

Attributes

core[R]

Public Class Methods

new(data_source, options = {}) click to toggle source
# File lib/doublespeak/repl.rb, line 3
def initialize(data_source, options = {})
  raise ArgumentError.new("Must provide a data_source") if data_source.nil?
  @core = Core.new(data_source, options)
end

Public Instance Methods

run() click to toggle source
# File lib/doublespeak/repl.rb, line 8
def run
  continue = true

  while continue
    core.render
    core.display.set_cursor_visible(core.query.empty?)

    char = core.display.read
    case char
    when "\r"
      if core.saved_candidates.present?
        continue = false
        core.finish_up
      end

    when "\e[A"
      core.increment_selection(-1)

    when "\e[B"
      core.increment_selection(+1)

    when "\u007F"
      core.back_up
      core.find_candidates

    when /^[a-zA-Z0-9 ]/
      core.entry(char)
      core.find_candidates
    end
  end
end