Class: Rouge::Formatters::Terminal256::EscapeSequence

Inherits:
Object
  • Object
show all
Defined in:
lib/rouge/formatters/terminal256.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(style) ⇒ EscapeSequence

Returns a new instance of EscapeSequence.

[View source]

33
34
35
# File 'lib/rouge/formatters/terminal256.rb', line 33

def initialize(style)
  @style = style
end

Instance Attribute Details

#styleObject (readonly)

Returns the value of attribute style.


32
33
34
# File 'lib/rouge/formatters/terminal256.rb', line 32

def style
  @style
end

Class Method Details

.xterm_colorsObject

[View source]

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/rouge/formatters/terminal256.rb', line 37

def self.xterm_colors
  @xterm_colors ||= [].tap do |out|
    # colors 0..15: 16 basic colors
    out << [0x00, 0x00, 0x00] # 0
    out << [0xcd, 0x00, 0x00] # 1
    out << [0x00, 0xcd, 0x00] # 2
    out << [0xcd, 0xcd, 0x00] # 3
    out << [0x00, 0x00, 0xee] # 4
    out << [0xcd, 0x00, 0xcd] # 5
    out << [0x00, 0xcd, 0xcd] # 6
    out << [0xe5, 0xe5, 0xe5] # 7
    out << [0x7f, 0x7f, 0x7f] # 8
    out << [0xff, 0x00, 0x00] # 9
    out << [0x00, 0xff, 0x00] # 10
    out << [0xff, 0xff, 0x00] # 11
    out << [0x5c, 0x5c, 0xff] # 12
    out << [0xff, 0x00, 0xff] # 13
    out << [0x00, 0xff, 0xff] # 14
    out << [0xff, 0xff, 0xff] # 15

    # colors 16..232: the 6x6x6 color cube
    valuerange = [0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff]

    217.times do |i|
      r = valuerange[(i / 36) % 6]
      g = valuerange[(i / 6) % 6]
      b = valuerange[i % 6]
      out << [r, g, b]
    end

    # colors 233..253: grayscale
    1.upto 22 do |i|
      v = 8 + i * 10
      out << [v, v, v]
    end
  end
end

Instance Method Details

#bgObject

[View source]

80
81
82
83
# File 'lib/rouge/formatters/terminal256.rb', line 80

def bg
  return @bg if instance_variable_defined? :@bg
  @bg = style.bg && self.class.color_index(style.bg)
end

#fgObject

[View source]

75
76
77
78
# File 'lib/rouge/formatters/terminal256.rb', line 75

def fg
  return @fg if instance_variable_defined? :@fg
  @fg = style.fg && self.class.color_index(style.fg)
end

#reset_stringObject

[View source]

105
106
107
108
109
110
111
112
113
114
# File 'lib/rouge/formatters/terminal256.rb', line 105

def reset_string
  @reset_string ||= begin
    attrs = []
    attrs << '39' if fg # fg reset
    attrs << '49' if bg # bg reset
    attrs << '00' if style[:bold] || style[:italic]

    escape(attrs)
  end
end

#stream_value(val) {|style_string| ... } ⇒ Object

Yields:

[View source]

86
87
88
89
90
91
# File 'lib/rouge/formatters/terminal256.rb', line 86

def stream_value(val, &b)
  yield style_string
  yield val.gsub("\e", "\\e")
           .gsub("\n", "#{reset_string}\n#{style_string}")
  yield reset_string
end

#style_stringObject

[View source]

93
94
95
96
97
98
99
100
101
102
103
# File 'lib/rouge/formatters/terminal256.rb', line 93

def style_string
  @style_string ||= begin
    attrs = []

    attrs << ['38', '5', fg.to_s] if fg
    attrs << ['48', '5', bg.to_s] if bg
    attrs << '01' if style[:bold]
    attrs << '04' if style[:italic] # underline, but hey, whatevs
    escape(attrs)
  end
end