Class: Foruiman::ANSI::Styles

Inherits:
Object
  • Object
show all
Defined in:
lib/foruiman/ansi.rb

Overview

A bounded style snapshot makes each retained row independently renderable.

Instance Method Summary collapse

Constructor Details

#initialize ⇒ Styles

Returns a new instance of Styles.



9
10
11
# File 'lib/foruiman/ansi.rb', line 9

def initialize
  @values = {}
end

Instance Method Details

#apply(sequence) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/foruiman/ansi.rb', line 13

def apply(sequence)
  values = sequence.delete_prefix("\e[").delete_suffix("m").split(";")
  values = ["0"] if values.empty?
  until values.empty?
    value = values.shift
    code = value.to_i
    case code
    when 0 then @values.clear
    when 1, 2 then @values[:intensity] = value
    when 3 then @values[:italic] = value
    when 4, 21 then @values[:underline] = value
    when 5, 6 then @values[:blink] = value
    when 7 then @values[:inverse] = value
    when 8 then @values[:conceal] = value
    when 9 then @values[:strike] = value
    when 22 then @values.delete(:intensity)
    when 23 then @values.delete(:italic)
    when 24 then @values.delete(:underline)
    when 25 then @values.delete(:blink)
    when 27 then @values.delete(:inverse)
    when 28 then @values.delete(:conceal)
    when 29 then @values.delete(:strike)
    when 30..37, 90..97 then @values[:foreground] = value
    when 40..47, 100..107 then @values[:background] = value
    when 38, 48 then color(code, value, values)
    when 39 then @values.delete(:foreground)
    when 49 then @values.delete(:background)
    end
  end
end

#prefix ⇒ Object



44
45
46
# File 'lib/foruiman/ansi.rb', line 44

def prefix
  @values.empty? ? "" : "\e[#{@values.values.join(';')}m"
end