Module: Remedy::Console

Defined in:
lib/remedy/console.rb,
lib/remedy/console_resize.rb

Defined Under Namespace

Modules: Resize Classes: UnknownConsoleSize

Constant Summary collapse

TIOCGWINSZ =
case RbConfig::CONFIG['host_os']
when /darwin|mac os/
  0x40087468
when /linux/
  0x5413
else
  0x00
end

Class Method Summary collapse

Class Method Details

.columnsObject Also known as: width



52
53
54
# File 'lib/remedy/console.rb', line 52

def columns
  size.cols
end

.cooked!Object



47
48
49
50
# File 'lib/remedy/console.rb', line 47

def cooked!
  input.echo = true
  input.cooked!
end

.inputObject



18
19
20
# File 'lib/remedy/console.rb', line 18

def input
  @input ||= $stdin
end

.input=(new_input) ⇒ Object



26
27
28
# File 'lib/remedy/console.rb', line 26

def input= new_input
  @input = new_input
end

.interactive?Boolean

Returns:

  • (Boolean)


77
78
79
# File 'lib/remedy/console.rb', line 77

def interactive?
  input.isatty
end

.outputObject



22
23
24
# File 'lib/remedy/console.rb', line 22

def output
  @output ||= $stdout
end

.output=(new_output) ⇒ Object



30
31
32
# File 'lib/remedy/console.rb', line 30

def output= new_output
  @output = new_output
end

.rawObject



34
35
36
37
38
39
40
# File 'lib/remedy/console.rb', line 34

def raw
  raw!
  result = yield
ensure
  cooked!
  return result
end

.raw!Object



42
43
44
45
# File 'lib/remedy/console.rb', line 42

def raw!
  input.echo = false
  input.raw!
end

.rowsObject Also known as: height



57
58
59
# File 'lib/remedy/console.rb', line 57

def rows
  size.rows
end

.set_console_resized_hook!Object



81
82
83
84
85
# File 'lib/remedy/console.rb', line 81

def set_console_resized_hook!
  Console::Resize.set_console_resized_hook! do |*args|
    yield(*args)
  end
end

.sizeObject



62
63
64
65
66
67
68
69
70
71
# File 'lib/remedy/console.rb', line 62

def size
  return @size_override if @size_override

  str = [0, 0, 0, 0].pack('SSSS')
  if input.respond_to?(:ioctl) && input.ioctl(TIOCGWINSZ, str) >= 0 then
    Size.new str.unpack('SSSS').first 2
  else
    raise UnknownConsoleSize, "Unable to get console size"
  end
end

.size_override=(new_size) ⇒ Object



73
74
75
# File 'lib/remedy/console.rb', line 73

def size_override= new_size
  @size_override = new_size
end