module Dex::UI::ANSI
Constants
- ESC
Public Class Methods
control(args, cmd)
click to toggle source
# File lib/dex/ui/ansi.rb, line 18 def self.control(args, cmd) ESC + "[" + args + cmd end
cursor_back(n = 1)
click to toggle source
# File lib/dex/ui/ansi.rb, line 42 def self.cursor_back(n = 1) return '' if n.zero? control(n.to_s, 'D') end
cursor_down(n = 1)
click to toggle source
# File lib/dex/ui/ansi.rb, line 32 def self.cursor_down(n = 1) return '' if n.zero? control(n.to_s, 'B') end
cursor_forward(n = 1)
click to toggle source
# File lib/dex/ui/ansi.rb, line 37 def self.cursor_forward(n = 1) return '' if n.zero? control(n.to_s, 'C') end
cursor_up(n = 1)
click to toggle source
# File lib/dex/ui/ansi.rb, line 27 def self.cursor_up(n = 1) return '' if n.zero? control(n.to_s, 'A') end
printing_width(str)
click to toggle source
ANSI
escape sequences (like x1b[31m) have zero width. when calculating the padding width, we must exclude them.
# File lib/dex/ui/ansi.rb, line 10 def self.printing_width(str) strip_codes(str).size end
sgr(params)
click to toggle source
en.wikipedia.org/wiki/ANSI_escape_code#graphics
# File lib/dex/ui/ansi.rb, line 23 def self.sgr(params) control(params.to_s, 'm') end
strip_codes(str)
click to toggle source
# File lib/dex/ui/ansi.rb, line 14 def self.strip_codes(str) str.gsub(/\x1b\[[\d;]+[A-z]|\r/, '') end