Module: AI::Ansi

Defined in:
lib/ansi.rb

Overview

── ANSI helpers ─────────────────────────────────────────────────────

Class Method Summary collapse

Class Method Details

.boldObject



7
# File 'lib/ansi.rb', line 7

def bold     = "\e[1m"

.dimObject



8
# File 'lib/ansi.rb', line 8

def dim      = "\e[2m"

.fg(n) ⇒ Object



9
# File 'lib/ansi.rb', line 9

def fg(n)    = "\e[38;5;#{n}m"

.resetObject



6
# File 'lib/ansi.rb', line 6

def reset    = "\e[0m"

.strip(s) ⇒ Object



10
# File 'lib/ansi.rb', line 10

def strip(s) = s.gsub(/\e\[[\d;]*m/, "")

.width(s) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/ansi.rb', line 12

def width(s)
  strip(s).each_char.sum do |c|
    case c.ord
    when 0..126, 57344..63743 then 1
    when 65024..65039, 8205 then 0
    when 4352..4447, 9000..9215, 9728..9983, 11088..11093, 11904..40959,
         44032..55215, 63744..64255, 65040..65135, 65281..65376,
         127744..131071, 131072..262143 then 2
    else 1
    end
  end
end