class HighLine::Terminal::UnixStty

HighLine::Terminal option that uses external “stty” program to control terminal options.

Public Instance Methods

get_character(input = STDIN) click to toggle source

(see HighLine::Terminal#get_character)

# File lib/highline/terminal/unix_stty.rb, line 47
def get_character(input = STDIN)
  input.getc
end
raw_no_echo_mode() click to toggle source

(see HighLine::Terminal#raw_no_echo_mode)

# File lib/highline/terminal/unix_stty.rb, line 35
def raw_no_echo_mode
  save_stty 
  system "stty raw -echo -icanon isig" if input.tty?
end
restore_mode() click to toggle source

(see HighLine::Terminal#restore_mode)

# File lib/highline/terminal/unix_stty.rb, line 41
def restore_mode
  restore_stty
  print "\r"
end
terminal_size() click to toggle source

A Unix savvy method using stty to fetch the console columns, and rows. … stty does not work in JRuby @return (see HighLine::Terminal#terminal_size)

# File lib/highline/terminal/unix_stty.rb, line 10
def terminal_size
  begin
    require "io/console"
    winsize = begin
                IO.console.winsize.reverse
              rescue NoMethodError
                nil
              end
    return winsize if winsize
  rescue LoadError
  end

  if !@output.tty?
    [80, 24]
  elsif /solaris/ =~ RUBY_PLATFORM &&
     `stty` =~ /\brows = (\d+).*\bcolumns = (\d+)/
    [Regexp.last_match(2), Regexp.last_match(1)].map(&:to_i)
  elsif `stty size` =~ /^(\d+)\s(\d+)$/
    [Regexp.last_match(2).to_i, Regexp.last_match(1).to_i]
  else
    [80, 24]
  end
end