Module: Dev::UI::ANSI
- Defined in:
- lib/dev/ui/ansi.rb
Constant Summary collapse
- ESC =
"\x1b"
Class Method Summary collapse
- .control(args, cmd) ⇒ Object
- .cursor_back(n = 1) ⇒ Object
- .cursor_down(n = 1) ⇒ Object
- .cursor_forward(n = 1) ⇒ Object
-
.cursor_up(n = 1) ⇒ Object
Cursor Movement.
- .end_of_line ⇒ Object
- .hide_cursor ⇒ Object
-
.next_line ⇒ Object
Line Handling.
- .previous_line ⇒ Object
-
.printing_width(str) ⇒ Object
ANSI escape sequences (like x1b[31m) have zero width. when calculating the padding width, we must exclude them..
- .sgr(params) ⇒ Object
-
.show_cursor ⇒ Object
Cursor Visibility.
- .strip_codes(str) ⇒ Object
Class Method Details
.control(args, cmd) ⇒ Object
18 19 20 |
# File 'lib/dev/ui/ansi.rb', line 18 def self.control(args, cmd) ESC + "[" + args + cmd end |
.cursor_back(n = 1) ⇒ Object
44 45 46 47 |
# File 'lib/dev/ui/ansi.rb', line 44 def self.cursor_back(n = 1) return '' if n.zero? control(n.to_s, 'D') end |
.cursor_down(n = 1) ⇒ Object
34 35 36 37 |
# File 'lib/dev/ui/ansi.rb', line 34 def self.cursor_down(n = 1) return '' if n.zero? control(n.to_s, 'B') end |
.cursor_forward(n = 1) ⇒ Object
39 40 41 42 |
# File 'lib/dev/ui/ansi.rb', line 39 def self.cursor_forward(n = 1) return '' if n.zero? control(n.to_s, 'C') end |
.cursor_up(n = 1) ⇒ Object
Cursor Movement
29 30 31 32 |
# File 'lib/dev/ui/ansi.rb', line 29 def self.cursor_up(n = 1) return '' if n.zero? control(n.to_s, 'A') end |
.end_of_line ⇒ Object
69 70 71 |
# File 'lib/dev/ui/ansi.rb', line 69 def self.end_of_line control("\033[", 'C') end |
.hide_cursor ⇒ Object
55 56 57 |
# File 'lib/dev/ui/ansi.rb', line 55 def self.hide_cursor control('', "?25l") end |
.next_line ⇒ Object
Line Handling
61 62 63 |
# File 'lib/dev/ui/ansi.rb', line 61 def self.next_line cursor_down + control('1', 'G') end |
.previous_line ⇒ Object
65 66 67 |
# File 'lib/dev/ui/ansi.rb', line 65 def self.previous_line cursor_up + control('1', 'G') end |
.printing_width(str) ⇒ Object
ANSI escape sequences (like x1b[31m) have zero width. when calculating the padding width, we must exclude them.
10 11 12 |
# File 'lib/dev/ui/ansi.rb', line 10 def self.printing_width(str) strip_codes(str).size end |
.sgr(params) ⇒ Object
23 24 25 |
# File 'lib/dev/ui/ansi.rb', line 23 def self.sgr(params) control(params.to_s, 'm') end |
.show_cursor ⇒ Object
Cursor Visibility
51 52 53 |
# File 'lib/dev/ui/ansi.rb', line 51 def self.show_cursor control('', "?25h") end |
.strip_codes(str) ⇒ Object
14 15 16 |
# File 'lib/dev/ui/ansi.rb', line 14 def self.strip_codes(str) str.gsub(/\x1b\[[\d;]+[A-z]|\r/, '') end |