Module: Tty Private
- Defined in:
- utils/tty.rb,
sorbet/rbi/dsl/tty.rbi
Overview
This module is part of a private API. This module may only be used in the Homebrew/brew repository. Third parties should avoid using this module if possible, as it may be removed or changed without warning.
Various helper functions for interacting with TTYs.
Constant Summary collapse
- COLOR_CODES =
This constant is part of a private API. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
T.let( { red: 31, green: 32, yellow: 33, blue: 34, magenta: 35, cyan: 36, default: 39, }.freeze, T::Hash[Symbol, Integer], )
- STYLE_CODES =
This constant is part of a private API. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
T.let( { reset: 0, bold: 1, italic: 3, underline: 4, strikethrough: 9, no_underline: 24, }.freeze, T::Hash[Symbol, Integer], )
- SPECIAL_CODES =
This constant is part of a private API. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
T.let( { up: "1A", down: "1B", right: "1C", left: "1D", erase_line: "K", erase_char: "P", }.freeze, T::Hash[Symbol, String], )
- CODES =
This constant is part of a private API. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
T.let(COLOR_CODES.merge(STYLE_CODES).freeze, T::Hash[Symbol, Integer])
Class Method Summary collapse
- .blue ⇒ String private
- .bold ⇒ String private
- .clear_to_end ⇒ String private
- .color? ⇒ Boolean private
- .current_escape_sequence ⇒ String private
- .cyan ⇒ String private
- .default ⇒ String private
- .down ⇒ String private
- .erase_char ⇒ String private
- .erase_line ⇒ String private
- .green ⇒ String private
- .height ⇒ Integer private
- .hide_cursor ⇒ String private
- .italic ⇒ String private
- .left ⇒ String private
- .magenta ⇒ String private
- .move_cursor_beginning ⇒ String private
- .move_cursor_down(line_count) ⇒ String private
- .move_cursor_up(line_count) ⇒ String private
- .move_cursor_up_beginning(line_count) ⇒ String private
- .no_underline ⇒ String private
- .red ⇒ String private
- .reset ⇒ String private
- .reset_escape_sequence! ⇒ void private
- .right ⇒ String private
- .show_cursor ⇒ String private
- .size ⇒ Array<(Integer, Integer)>? private
- .strikethrough ⇒ String private
- .strip_ansi(string) ⇒ String private
- .truncate(string) ⇒ String private
- .underline ⇒ String private
- .up ⇒ String private
- .width ⇒ Integer private
- .with(stream, &_block) ⇒ void private
- .yellow ⇒ String private
Class Method Details
.blue ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
11 |
# File 'sorbet/rbi/dsl/tty.rbi', line 11 def blue; end |
.bold ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
14 |
# File 'sorbet/rbi/dsl/tty.rbi', line 14 def bold; end |
.clear_to_end ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
84 85 86 |
# File 'utils/tty.rb', line 84 def clear_to_end "\033[K" end |
.color? ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
164 165 166 167 168 169 170 171 172 |
# File 'utils/tty.rb', line 164 def color? require "env_config" return false if Homebrew::EnvConfig.no_color? return true if Homebrew::EnvConfig.color? return false if @stream.blank? @stream.tty? end |
.current_escape_sequence ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
124 125 126 127 128 |
# File 'utils/tty.rb', line 124 def current_escape_sequence return "" if @escape_sequence.nil? "\033[#{@escape_sequence.join(";")}m" end |
.cyan ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
17 |
# File 'sorbet/rbi/dsl/tty.rbi', line 17 def cyan; end |
.default ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
20 |
# File 'sorbet/rbi/dsl/tty.rbi', line 20 def default; end |
.down ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
23 |
# File 'sorbet/rbi/dsl/tty.rbi', line 23 def down; end |
.erase_char ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
26 |
# File 'sorbet/rbi/dsl/tty.rbi', line 26 def erase_char; end |
.erase_line ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
29 |
# File 'sorbet/rbi/dsl/tty.rbi', line 29 def erase_line; end |
.green ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
32 |
# File 'sorbet/rbi/dsl/tty.rbi', line 32 def green; end |
.height ⇒ Integer
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
109 110 111 |
# File 'utils/tty.rb', line 109 def height @height ||= T.let(size&.first || `/usr/bin/tput lines 2>/dev/null`.presence&.to_i || 40, T.nilable(Integer)) end |
.hide_cursor ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
89 90 91 |
# File 'utils/tty.rb', line 89 def hide_cursor "\033[?25l" end |
.italic ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
35 |
# File 'sorbet/rbi/dsl/tty.rbi', line 35 def italic; end |
.left ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
38 |
# File 'sorbet/rbi/dsl/tty.rbi', line 38 def left; end |
.magenta ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
41 |
# File 'sorbet/rbi/dsl/tty.rbi', line 41 def magenta; end |
.move_cursor_beginning ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
74 75 76 |
# File 'utils/tty.rb', line 74 def move_cursor_beginning "\033[0G" end |
.move_cursor_down(line_count) ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
79 80 81 |
# File 'utils/tty.rb', line 79 def move_cursor_down(line_count) "\033[#{line_count}B" end |
.move_cursor_up(line_count) ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
64 65 66 |
# File 'utils/tty.rb', line 64 def move_cursor_up(line_count) "\033[#{line_count}A" end |
.move_cursor_up_beginning(line_count) ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
69 70 71 |
# File 'utils/tty.rb', line 69 def move_cursor_up_beginning(line_count) "\033[#{line_count}F" end |
.no_underline ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
44 |
# File 'sorbet/rbi/dsl/tty.rbi', line 44 def no_underline; end |
.red ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
47 |
# File 'sorbet/rbi/dsl/tty.rbi', line 47 def red; end |
.reset ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
50 |
# File 'sorbet/rbi/dsl/tty.rbi', line 50 def reset; end |
.reset_escape_sequence! ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
131 132 133 |
# File 'utils/tty.rb', line 131 def reset_escape_sequence! @escape_sequence = T.let(nil, T.nilable(T::Array[Integer])) end |
.right ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
53 |
# File 'sorbet/rbi/dsl/tty.rbi', line 53 def right; end |
.show_cursor ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
94 95 96 |
# File 'utils/tty.rb', line 94 def show_cursor "\033[?25h" end |
.size ⇒ Array<(Integer, Integer)>?
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
99 100 101 102 103 104 105 106 |
# File 'utils/tty.rb', line 99 def size return @size if defined?(@size) height, width = `/bin/stty size 2>/dev/null`.presence&.split&.map(&:to_i) return if height.nil? || width.nil? @size = T.let([height, width], T.nilable([Integer, Integer])) end |
.strikethrough ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
56 |
# File 'sorbet/rbi/dsl/tty.rbi', line 56 def strikethrough; end |
.strip_ansi(string) ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
59 60 61 |
# File 'utils/tty.rb', line 59 def strip_ansi(string) string.gsub(/\033\[\d+(;\d+)*m/, "") end |
.truncate(string) ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
119 120 121 |
# File 'utils/tty.rb', line 119 def truncate(string) (w = width).zero? ? string.to_s : (string.to_s[0, w - 4] || "") end |
.underline ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
59 |
# File 'sorbet/rbi/dsl/tty.rbi', line 59 def underline; end |
.up ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
62 |
# File 'sorbet/rbi/dsl/tty.rbi', line 62 def up; end |
.width ⇒ Integer
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
114 115 116 |
# File 'utils/tty.rb', line 114 def width @width ||= T.let(size&.second || `/usr/bin/tput cols 2>/dev/null`.presence&.to_i || 80, T.nilable(Integer)) end |
.with(stream, &_block) ⇒ void
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
This method returns an undefined value.
49 50 51 52 53 54 55 56 |
# File 'utils/tty.rb', line 49 def with(stream, &_block) previous_stream = @stream @stream = T.let(stream, T.nilable(T.any(IO, StringIO))) yield stream ensure @stream = T.let(previous_stream, T.nilable(T.any(IO, StringIO))) end |
.yellow ⇒ String
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
65 |
# File 'sorbet/rbi/dsl/tty.rbi', line 65 def yellow; end |