Class: Test::Unit::Color
- Inherits:
-
Object
show all
- Defined in:
- lib/test/unit/color.rb
Defined Under Namespace
Classes: Error, ParseError
Constant Summary
collapse
- NAMES =
["black", "red", "green", "yellow",
"blue", "magenta", "cyan", "white"]
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(name, options = {}) ⇒ Color
Returns a new instance of Color.
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/test/unit/color.rb', line 28
def initialize(name, options={})
@name = name
if options.has_key?(:foreground)
if options[:foreground].nil?
@background = false
else
@background = !options[:foreground]
end
else
@background = options[:background]
end
@intensity = options[:intensity]
@bold = options[:bold]
@italic = options[:italic]
@underline = options[:underline]
end
|
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
27
28
29
|
# File 'lib/test/unit/color.rb', line 27
def name
@name
end
|
Class Method Details
.parse_256_color(string) ⇒ Object
11
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/test/unit/color.rb', line 11
def parse_256_color(string)
case string
when /\A([0-5])([0-5])([0-5])\z/
red, green, blue = $1, $2, $3
red.to_i * 36 + green.to_i * 6 + blue.to_i + 16
else
message = "must be 'RGB' format and R, G and B " +
"are in 0-5: #{string.inspect}"
raise ParseError, message
end
end
|
Instance Method Details
#+(other) ⇒ Object
104
105
106
|
# File 'lib/test/unit/color.rb', line 104
def +(other)
MixColor.new([self, other])
end
|
#==(other) ⇒ Object
69
70
71
72
73
74
75
|
# File 'lib/test/unit/color.rb', line 69
def ==(other)
self.class === other and
[name, background?, intensity?,
bold?, italic?, underline?] ==
[other.name, other.background?, other.intensity?,
other.bold?, other.italic?, other.underline?]
end
|
#background? ⇒ Boolean
49
50
51
|
# File 'lib/test/unit/color.rb', line 49
def background?
@background
end
|
#bold? ⇒ Boolean
57
58
59
|
# File 'lib/test/unit/color.rb', line 57
def bold?
@bold
end
|
#escape_sequence ⇒ Object
100
101
102
|
# File 'lib/test/unit/color.rb', line 100
def escape_sequence
"\e[#{sequence.join(';')}m"
end
|
#foreground? ⇒ Boolean
45
46
47
|
# File 'lib/test/unit/color.rb', line 45
def foreground?
not background?
end
|
#intensity? ⇒ Boolean
53
54
55
|
# File 'lib/test/unit/color.rb', line 53
def intensity?
@intensity
end
|
#italic? ⇒ Boolean
61
62
63
|
# File 'lib/test/unit/color.rb', line 61
def italic?
@italic
end
|
#sequence ⇒ Object
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# File 'lib/test/unit/color.rb', line 77
def sequence
sequence = []
if @name == "none"
elsif @name == "reset"
sequence << "0"
else
if NAMES.include?(@name)
color_parameter = foreground? ? 3 : 4
color_parameter += 6 if intensity?
color = NAMES.index(@name)
sequence << "#{color_parameter}#{color}"
else
sequence << (foreground? ? "38" : "48")
sequence << "5"
sequence << self.class.parse_256_color(@name).to_s
end
end
sequence << "1" if bold?
sequence << "3" if italic?
sequence << "4" if underline?
sequence
end
|
#underline? ⇒ Boolean
65
66
67
|
# File 'lib/test/unit/color.rb', line 65
def underline?
@underline
end
|