Module: Tty Private

Extended by:
T::Sig
Defined in:
Library/Homebrew/utils/tty.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

Various helper functions for interacting with TTYs.

Constant Summary collapse

COLOR_CODES =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

{
  red:     31,
  green:   32,
  yellow:  33,
  blue:    34,
  magenta: 35,
  cyan:    36,
  default: 39,
}.freeze
STYLE_CODES =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

{
  reset:         0,
  bold:          1,
  italic:        3,
  underline:     4,
  strikethrough: 9,
  no_underline:  24,
}.freeze
SPECIAL_CODES =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

{
  up:         "1A",
  down:       "1B",
  right:      "1C",
  left:       "1D",
  erase_line: "K",
  erase_char: "P",
}.freeze
CODES =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

COLOR_CODES.merge(STYLE_CODES).freeze

Class Method Summary collapse

Class Method Details

.color?Boolean

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)

113
114
115
116
117
118
# File 'Library/Homebrew/utils/tty.rb', line 113

def color?
  return false if Homebrew::EnvConfig.no_color?
  return true if Homebrew::EnvConfig.color?

  @stream.tty?
end

.current_escape_sequenceObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


74
75
76
77
78
# File 'Library/Homebrew/utils/tty.rb', line 74

def current_escape_sequence
  return "" if @escape_sequence.nil?

  "\033[#{@escape_sequence.join(";")}m"
end

.reset_escape_sequence!Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


81
82
83
# File 'Library/Homebrew/utils/tty.rb', line 81

def reset_escape_sequence!
  @escape_sequence = nil
end

.strip_ansi(string) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


24
25
26
# File 'Library/Homebrew/utils/tty.rb', line 24

def strip_ansi(string)
  string.gsub(/\033\[\d+(;\d+)*m/, "")
end

.to_sObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


104
105
106
107
108
109
110
# File 'Library/Homebrew/utils/tty.rb', line 104

def to_s
  return "" unless color?

  current_escape_sequence
ensure
  reset_escape_sequence!
end

.truncate(string) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


39
40
41
# File 'Library/Homebrew/utils/tty.rb', line 39

def truncate(string)
  (w = width).zero? ? string.to_s : (string.to_s[0, w - 4] || "")
end

.widthObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


29
30
31
32
33
34
35
36
# File 'Library/Homebrew/utils/tty.rb', line 29

def width
  @width ||= begin
    _, width = `/bin/stty size 2>/dev/null`.split
    width, = `/usr/bin/tput cols 2>/dev/null`.split if width.to_i.zero?
    width ||= 80
    width.to_i
  end
end

.with(stream, &_block) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.


14
15
16
17
18
19
20
21
# File 'Library/Homebrew/utils/tty.rb', line 14

def with(stream, &_block)
  previous_stream = @stream
  @stream = stream

  yield stream
ensure
  @stream = previous_stream
end