Sha256: 19a7c3f0e094e21dd044a3bdf8d7c09e5fbc7f1b35f083cbe259948fd01d48df

Contents?: true

Size: 1.12 KB

Versions: 4

Compression:

Stored size: 1.12 KB

Contents

# encoding: utf-8

require_relative 'codes'
require_relative 'mode'

module TTY
  class Prompt
    class Reader
      class Console
        ESC = "\e".freeze
        CSI = "\e[".freeze

        # Key codes
        #
        # @return [Hash[Symbol]]
        #
        # @api public
        attr_reader :keys

        # Escape codes
        #
        # @return [Array[Integer]]
        #
        # @api public
        attr_reader :escape_codes

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

        # Get a character from console with echo
        #
        # @param [Hash[Symbol]] options
        # @option options [Symbol] :echo
        #   the echo toggle
        #
        # @return [String]
        #
        # @api private
        def get_char(options)
          mode.raw(options[:raw]) do
            mode.echo(options[:echo]) { input.getc }
          end
        end

        protected

        attr_reader :mode

        attr_reader :input
      end # Console
    end # Reader
  end # Prompt
end # TTY

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
tty-prompt-0.13.1 lib/tty/prompt/reader/console.rb
tty-prompt-0.13.0 lib/tty/prompt/reader/console.rb
austb-tty-prompt-0.13.0 lib/tty/prompt/reader/console.rb
tty-prompt-0.12.0 lib/tty/prompt/reader/console.rb