class Byebug::Interface


Contains common functionality to all implemented interfaces.
Main Interface class

def autorestore


Restores history according to +autosave+ setting.
def autorestore
  history.restore if Setting[:autosave]
end

def autosave


Saves or clears history according to +autosave+ setting.
def autosave
  Setting[:autosave] ? history.save : history.clear
end

def close

def close
end

def confirm(prompt)


Confirms user introduced an affirmative response to the input stream.
def confirm(prompt)
  readline(prompt) == 'y'
end

def errmsg(message)


Prints an error message to the error stream.
def errmsg(message)
  error.print("*** #{message}\n")
end

def initialize

def initialize
  @command_queue, @history = [], History.new
end

def print(message)

def print(message)
  output.print(message)
end

def puts(message)


Prints an output message to the output stream.
def puts(message)
  output.puts(message)
end

def read_command(prompt)


Pops a command from the input stream.
def read_command(prompt)
  return command_queue.shift unless command_queue.empty?
  cmds = read_input(prompt)
  return unless cmds
  command_queue.concat(cmds)
  command_queue.shift
end

def read_file(filename)


Pushes lines in +filename+ to the command queue.
def read_file(filename)
  command_queue.concat(get_lines(filename))
end

def read_input(prompt, save_hist = true)


Reads a new line from the interface's input stream.
def read_input(prompt, save_hist = true)
  line = readline(prompt)
  return unless line
  history.push(line) if save_hist
  split_commands(line)
end

def split_commands(cmd_line)


array of commands: [cmd1, cmd2, ..., cmdN]
Splits a command line of the form "cmd1 ; cmd2 ; ... ; cmdN" into an
def split_commands(cmd_line)
  return [''] if cmd_line.empty?
  cmd_line.split(/;/).each_with_object([]) do |v, m|
    if m.empty? || m.last[-1] != '\\'
      m << v
      next
    end
    m.last[-1, 1] = ''
    m.last << ';' << v
  end
end