Module: HighLine::SystemExtensions

### Home Classes Methods

### In Files

- lib/highline/system_extensions.rb

### Namespace

- MODULE HighLine::SystemExtensions::WinAPI

### Methods

- #get_character
- #initialize_system_extensions
- #raw_no_echo_mode
- #restore_mode
- #terminal_size

### Files

- INSTALL
- LICENSE
- README.rdoc
- TODO

### Class/Module Index

Quicksearch

- HighLine
- HighLine::ColorScheme
- HighLine::HighLine
- HighLine::HighLine::HighLine
- HighLine::HighLine::HighLine::String
- HighLine::Menu
- HighLine::Question
- HighLine::Question::NoAutoCompleteMatch
- HighLine::QuestionError
- HighLine::SampleColorScheme
- HighLine::Simulate
- HighLine::StringExtensions
- HighLine::Style
- HighLine::SystemExtensions
- HighLine::SystemExtensions::WinAPI
- IO
- Kernel
- Object
- String
- StringIO

No matching classes.

# HighLine::SystemExtensions

### Constants

CHARACTER_MODE

  WARNING: This requires the external "stty" program!

JRUBY

### Public Instance Methods

get_character( input = STDIN ) click to toggle source

Windows savvy getc().

WARNING: This method ignores `input` and reads one character from `STDIN`!

    # File lib/highline/system_extensions.rb, line 99
    def get_character( input = STDIN )
      WinAPI._getch
    end

initialize_system_extensions() click to toggle source

    # File lib/highline/system_extensions.rb, line 15
    def initialize_system_extensions
      require 'java'
      if JRUBY_VERSION =~ /^1.7/
        java_import 'jline.console.ConsoleReader'

        @java_console = ConsoleReader.new(@input.to_inputstream, @output.to_outputstream)
        @java_console.set_history_enabled(false)
        @java_console.set_bell_enabled(true)
        @java_console.set_pagination_enabled(false)
        @java_terminal = @java_console.getTerminal
      elsif JRUBY_VERSION =~ /^1.6/
        java_import 'java.io.OutputStreamWriter'
        java_import 'java.nio.channels.Channels'
        java_import 'jline.ConsoleReader'
        java_import 'jline.Terminal'

        @java_input = Channels.newInputStream(@input.to_channel)
        @java_output = OutputStreamWriter.new(Channels.newOutputStream(@output.to_channel))
        @java_terminal = Terminal.getTerminal
        @java_console = ConsoleReader.new(@java_input, @java_output)
        @java_console.setUseHistory(false)
        @java_console.setBellEnabled(true)
        @java_console.setUsePagination(false)
      end
    end

raw_no_echo_mode() click to toggle source

We do not define a raw_no_echo_mode for Windows as _getch turns off echo

    # File lib/highline/system_extensions.rb, line 104
    def raw_no_echo_mode
    end

restore_mode() click to toggle source

    # File lib/highline/system_extensions.rb, line 107
    def restore_mode
    end

terminal_size() click to toggle source

A Windows savvy method to fetch the console columns, and rows.

    # File lib/highline/system_extensions.rb, line 111
    def terminal_size
      format        = 'SSSSSssssSS'
      buf           = ([0] * format.size).pack(format)
      stdout_handle = WinAPI.GetStdHandle(0xFFFFFFF5)

      WinAPI.GetConsoleScreenBufferInfo(stdout_handle, buf)
      _, _, _, _, _,
      left, top, right, bottom, _, _ = buf.unpack(format)
      return right - left + 1, bottom - top + 1
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.