class Mysh::Console

A wrapper for the mysh console terminal.

Public Class Methods

new() click to toggle source

Setup the console wrapper.

# File lib/mysh/sources/console.rb, line 10
def initialize
  @eoi = false
end

Public Instance Methods

eoi?() click to toggle source

Have we reached the end of input?

# File lib/mysh/sources/console.rb, line 42
def eoi?
  @eoi
end
get_command() click to toggle source

Get the initial line of command input.

# File lib/mysh/sources/console.rb, line 15
def get_command
  puts MNV[:pre_prompt] if MNV.key?(:pre_prompt)
  get(prompt: MNV[:prompt])
rescue MiniReadlinePLE => err
  retry unless handle_get_error(err, :prompt)
  exit
end
get_command_extra(str) click to toggle source

Get additional lines of continued commands.

# File lib/mysh/sources/console.rb, line 24
def get_command_extra(str)
  get(prompt: MNV[:post_prompt] + '\\', prefix: str[0])
rescue MiniReadlinePLE => err
  retry unless handle_get_error(err, :post_prompt)
  exit
end
handle_get_error(err, selector) click to toggle source

Handle a readline error

# File lib/mysh/sources/console.rb, line 32
def handle_get_error(err, selector)
  puts "Error #{err.class}: #{err}"
  puts err.backtrace if MNV[:debug]

  MNV[selector].empty?
ensure
  MNV[selector] = ""
end

Private Instance Methods

get(parms={}) click to toggle source

Get some actual user input!

# File lib/mysh/sources/console.rb, line 49
def get(parms={})
  parms[:history] = MNV[:history].extract_boolean unless parms.has_key?(:history)
  parms[:no_dups] = MNV[:no_dups].extract_boolean unless parms.has_key?(:no_dups)
  parms[:no_move] = MNV[:no_move].extract_boolean unless parms.has_key?(:no_move)

  result = (input = Mysh.input).readline(parms)
  input.instance_options[:initial] = ""
  result
rescue MiniReadlineEOI
  @eoi = true
  "\n"
end