Class: TTY::Reader::Console

Inherits:
Object
  • Object
show all
Defined in:
lib/tty/reader/console.rb

Constant Summary collapse

ESC =
"\e".freeze
CSI =
"\e[".freeze
TIMEOUT =
0.1

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(input) ⇒ Console

Returns a new instance of Console.



30
31
32
33
34
35
# File 'lib/tty/reader/console.rb', line 30

def initialize(input)
  @input = input
  @mode  = Mode.new(input)
  @keys  = Keys.ctrl_keys.merge(Keys.keys)
  @escape_codes = [[ESC.ord], CSI.bytes.to_a]
end

Instance Attribute Details

#escape_codesArray[Integer] (readonly)

Escape codes

Returns:

  • (Array[Integer])


28
29
30
# File 'lib/tty/reader/console.rb', line 28

def escape_codes
  @escape_codes
end

#keysHash[Symbol] (readonly)

Key codes

Returns:

  • (Hash[Symbol])


21
22
23
# File 'lib/tty/reader/console.rb', line 21

def keys
  @keys
end

Instance Method Details

#get_char(options) ⇒ String

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Get a character from console with echo

Parameters:

  • options (Hash[Symbol])

Options Hash (options):

  • :echo (Symbol)

    the echo toggle

Returns:

  • (String)


46
47
48
49
50
51
52
53
54
55
56
# File 'lib/tty/reader/console.rb', line 46

def get_char(options)
  mode.raw(options[:raw]) do
    mode.echo(options[:echo]) do
      if options[:nonblock]
        input.wait_readable(TIMEOUT) ? input.getc : nil
      else
        input.getc
      end
    end
  end
end