Class: TTY::Terminal

Inherits:
Object
  • Object
show all
Defined in:
lib/tty/terminal.rb,
lib/tty/terminal/echo.rb,
lib/tty/terminal/home.rb,
lib/tty/terminal/color.rb,
lib/tty/terminal/pager.rb,
lib/tty/terminal/pager/basic.rb,
lib/tty/terminal/pager/system.rb

Defined Under Namespace

Classes: BasicPager, Color, Echo, Home, Pager, SystemPager

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Terminal

Initialize a Terminal



42
43
44
45
46
47
48
49
# File 'lib/tty/terminal.rb', line 42

def initialize(options = {})
  @color = TTY::Terminal::Color.new(self.color?)
  @echo  = TTY::Terminal::Echo.new
  @pager = TTY::Terminal::Pager
  @home  = Home.new
  @default_width  = options.fetch(:default_width) { 80 }
  @default_height = options.fetch(:default_height) { 24 }
end

Instance Attribute Details

#colorTTY::Terminal::Color (readonly)

Return access to color terminal



30
31
32
# File 'lib/tty/terminal.rb', line 30

def color
  @color
end

#default_heightInteger (readonly)

Return default height of terminal

Examples:

default_height = TTY::Terminal.default_height

Returns:

  • (Integer)


23
24
25
# File 'lib/tty/terminal.rb', line 23

def default_height
  @default_height
end

#default_widthInteger (readonly)

Return default width of terminal

Examples:

default_width = TTY::Terminal.default_width

Returns:

  • (Integer)


13
14
15
# File 'lib/tty/terminal.rb', line 13

def default_width
  @default_width
end

#pagerTTY::Terminal::Pager (readonly)

Output pager



37
38
39
# File 'lib/tty/terminal.rb', line 37

def pager
  @pager
end

Instance Method Details

#color?Boolean

Check if terminal supports color

Returns:

  • (Boolean)


142
143
144
# File 'lib/tty/terminal.rb', line 142

def color?
  %x(tput colors 2>/dev/null).to_i > 2
end

#dynamic_heightInteger

Calculate dynamic height of the terminal

Returns:

  • (Integer)

    height



97
98
99
# File 'lib/tty/terminal.rb', line 97

def dynamic_height
  @dynamic_height ||= (dynamic_height_stty.nonzero? || dynamic_height_tput)
end

#dynamic_height_sttyInteger

Detect terminal height with stty utility

Returns:

  • (Integer)

    height



115
116
117
# File 'lib/tty/terminal.rb', line 115

def dynamic_height_stty
  %x(tty size 2>/dev/null).split[0].to_i
end

#dynamic_height_tputInteger

Detect terminal height with tput utility

Returns:

  • (Integer)

    height



133
134
135
# File 'lib/tty/terminal.rb', line 133

def dynamic_height_tput
  %x(tput lines 2>/dev/null).to_i
end

#dynamic_widthInteger

Calculate dynamic width of the terminal

Returns:

  • (Integer)

    width



88
89
90
# File 'lib/tty/terminal.rb', line 88

def dynamic_width
  @dynamic_width ||= (dynamic_width_stty.nonzero? || dynamic_width_tput)
end

#dynamic_width_sttyInteger

Detect terminal width with stty utility

Returns:

  • (Integer)

    width



106
107
108
# File 'lib/tty/terminal.rb', line 106

def dynamic_width_stty
  %x(tty size 2>/dev/null).split[1].to_i
end

#dynamic_width_tputInteger

Detect terminal width with tput utility

Returns:

  • (Integer)

    width



124
125
126
# File 'lib/tty/terminal.rb', line 124

def dynamic_width_tput
  %x(tput cols 2>/dev/null).to_i
end

#echo(is_on = true, &block) ⇒ Object

Echo given block

Parameters:

  • is_on (Boolean) (defaults to: true)


165
166
167
# File 'lib/tty/terminal.rb', line 165

def echo(is_on = true, &block)
  @echo.echo(is_on, &block)
end

#echo_offObject

Switch echo off



156
157
158
# File 'lib/tty/terminal.rb', line 156

def echo_off
  @echo.off
end

#echo_onObject

Switch echo on



149
150
151
# File 'lib/tty/terminal.rb', line 149

def echo_on
  @echo.on
end

#heightInteger

Determine current height

Returns:

  • (Integer)

    height



72
73
74
75
76
77
78
79
80
81
# File 'lib/tty/terminal.rb', line 72

def height
  env_tty_lines = ENV['TTY_LINES']
  if env_tty_lines =~ /^\d+$/
    env_tty_lines.to_i
  else
    TTY::System.unix? ? dynamic_height : default_height
  end
rescue
  default_height
end

#homeString

Find user home directory

Returns:

  • (String)


174
175
176
# File 'lib/tty/terminal.rb', line 174

def home
  @home.home
end

#page(text) ⇒ Object

Run text through a dynamically chosen pager

Parameters:

  • text (String)

    the text to page



184
185
186
# File 'lib/tty/terminal.rb', line 184

def page(text)
  @pager.page(text)
end

#widthInteger

Determine current width

Returns:

  • (Integer)

    width



56
57
58
59
60
61
62
63
64
65
# File 'lib/tty/terminal.rb', line 56

def width
  env_tty_columns = ENV['TTY_COLUMNS']
  if env_tty_columns =~ /^\d+$/
    env_tty_columns.to_i
  else
    TTY::System.unix? ? dynamic_width : default_width
  end
rescue
  default_width
end