term-ansicolor 1.7.1 → 1.10.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.all_images.yml +27 -0
- data/.gitignore +1 -0
- data/.utilsrc +26 -0
- data/README.md +5 -3
- data/Rakefile +4 -4
- data/VERSION +1 -1
- data/bin/term_colortab +27 -1
- data/bin/term_display +5 -3
- data/bin/term_mandel +30 -24
- data/bin/term_snow +13 -13
- data/examples/example.rb +31 -1
- data/lib/term/ansicolor/attribute/color256.rb +38 -36
- data/lib/term/ansicolor/attribute/color8.rb +16 -16
- data/lib/term/ansicolor/attribute/intense_color8.rb +32 -34
- data/lib/term/ansicolor/attribute/text.rb +18 -15
- data/lib/term/ansicolor/attribute/underline.rb +34 -0
- data/lib/term/ansicolor/attribute.rb +86 -45
- data/lib/term/ansicolor/hsl_triple.rb +2 -2
- data/lib/term/ansicolor/hyperlink.rb +34 -0
- data/lib/term/ansicolor/ppm_reader.rb +9 -4
- data/lib/term/ansicolor/rgb_triple.rb +1 -3
- data/lib/term/ansicolor/version.rb +1 -1
- data/lib/term/ansicolor.rb +46 -42
- data/term-ansicolor.gemspec +16 -29
- data/tests/ansicolor_test.rb +69 -2
- data/tests/attribute_test.rb +45 -6
- data/tests/hsl_triple_test.rb +2 -2
- data/tests/hyperlink_test.rb +58 -0
- data/tests/ppm_reader_test.rb +8 -0
- data/tests/rgb_triple_test.rb +1 -1
- metadata +50 -15
- data/.travis.yml +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d75f19d115fdee4233a120ece01a38b75c7f0cff14243e477def07b314f55b42
|
4
|
+
data.tar.gz: 9a3c5f4ac0abbd01a552ce2e5358bd1d3b2825c392495c941209e71cdbfb8e07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '015294663f0738e6cbeed73b3aa34d7ff6a19a9bc13be6ab683a750956cc854dae0d7630e606ff298252142f35f10b3a4cd02592761d72403bfd2d3de845be82'
|
7
|
+
data.tar.gz: 18741931918cf7c07192263ea683c69c7b6074d44572267e0d01d84d27a0f00ea66a0ae2d95ed2b96eee0e176bdf5f791f92d5aefb78a806ede47f2cc2a3b0ae
|
data/.all_images.yml
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
dockerfile: |-
|
2
|
+
RUN apk add --no-cache build-base git bash
|
3
|
+
RUN bash <<NUR
|
4
|
+
if [[ "$(ruby -e 'print RUBY_VERSION')" > '3' ]]
|
5
|
+
then
|
6
|
+
gem update --system
|
7
|
+
gem install gem_hadar bundler
|
8
|
+
else
|
9
|
+
gem install gem_hadar
|
10
|
+
gem install bundler -v 2.4.22
|
11
|
+
fi
|
12
|
+
NUR
|
13
|
+
|
14
|
+
script: &script |-
|
15
|
+
echo -e "\e[1m"
|
16
|
+
ruby -v
|
17
|
+
echo -e "\e[0m"
|
18
|
+
bundle
|
19
|
+
rake test
|
20
|
+
|
21
|
+
images:
|
22
|
+
ruby:3.3-alpine: *script
|
23
|
+
ruby:3.2-alpine: *script
|
24
|
+
ruby:3.1-alpine: *script
|
25
|
+
ruby:3.0-alpine: *script
|
26
|
+
ruby:2.7-alpine: *script
|
27
|
+
ruby:2.6-alpine: *script
|
data/.gitignore
CHANGED
data/.utilsrc
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# vim: set ft=ruby:
|
2
|
+
|
3
|
+
search do
|
4
|
+
prune_dirs /\A(\.svn|\.git|CVS|tmp|tags|coverage|pkg)\z/
|
5
|
+
skip_files /(\A\.|\.sw[pon]\z|\.(log|fnm|jpg|jpeg|png|pdf|svg)\z|tags|~\z)/i
|
6
|
+
end
|
7
|
+
|
8
|
+
discover do
|
9
|
+
prune_dirs /\A(\.svn|\.git|CVS|tmp|tags|coverage|pkg)\z/
|
10
|
+
skip_files /(\A\.|\.sw[pon]\z|\.log\z|~\z)/
|
11
|
+
binary false
|
12
|
+
end
|
13
|
+
|
14
|
+
strip_spaces do
|
15
|
+
prune_dirs /\A(\..*|CVS|pkg)\z/
|
16
|
+
skip_files /(\A\.|\.sw[pon]\z|\.log\z|~\z)/
|
17
|
+
end
|
18
|
+
|
19
|
+
probe do
|
20
|
+
test_framework :"test-unit"
|
21
|
+
end
|
22
|
+
|
23
|
+
ssh_tunnel do
|
24
|
+
terminal_multiplexer :tmux
|
25
|
+
end
|
26
|
+
|
data/README.md
CHANGED
@@ -22,13 +22,15 @@ The homepage of this library is located at
|
|
22
22
|
|
23
23
|
The following executables are provided with Term::ANSIColor:
|
24
24
|
|
25
|
-
* `
|
26
|
-
* `
|
27
|
-
* `colortab`: Displays a table of the 256 terminal colors with their indices and
|
25
|
+
* `term_cdiff`: colors a diff patch
|
26
|
+
* `term_colortab`: Displays a table of the 256 terminal colors with their indices and
|
28
27
|
nearest html equivalents.
|
29
28
|
* `term_display`: displays a ppm3 or ppm6 image file in the terminal. If the netpbm
|
30
29
|
programs are installed it can handle a lot of other image file formats.
|
30
|
+
* `term_decolor`: decolors any text file that was colored with ANSI escape sequences
|
31
31
|
* `term_mandel`: displays the mandelbrot set in the terminal
|
32
|
+
* `term_snow`: displays falling snow in the terminal using ANSI movement
|
33
|
+
sequences.
|
32
34
|
|
33
35
|
Additionally the file examples/example.rb in the source/gem-distribution shows
|
34
36
|
how this library can be used.
|
data/Rakefile
CHANGED
@@ -8,21 +8,21 @@ GemHadar do
|
|
8
8
|
path_module 'Term::ANSIColor'
|
9
9
|
author 'Florian Frank'
|
10
10
|
email 'flori@ping.de'
|
11
|
-
homepage "
|
11
|
+
homepage "https://github.com/flori/#{name}"
|
12
12
|
summary 'Ruby library that colors strings using ANSI escape sequences'
|
13
13
|
description 'This library uses ANSI escape sequences to control the attributes of terminal output'
|
14
14
|
licenses << 'Apache-2.0'
|
15
15
|
|
16
16
|
test_dir 'tests'
|
17
17
|
ignore '.*.sw[pon]', 'pkg', 'Gemfile.lock', '.rvmrc', 'coverage',
|
18
|
-
'tags', '.bundle', '.byebug_history'
|
18
|
+
'tags', '.bundle', '.byebug_history', 'errors.lst'
|
19
19
|
|
20
20
|
readme 'README.md'
|
21
21
|
executables.merge Dir['bin/*'].map { |x| File.basename(x) }
|
22
22
|
|
23
23
|
dependency 'tins', '~>1.0'
|
24
|
+
dependency 'mize', '~>0.5'
|
24
25
|
development_dependency 'simplecov'
|
25
26
|
development_dependency 'test-unit'
|
26
|
-
|
27
|
-
required_ruby_version '>= 2.0'
|
27
|
+
development_dependency 'utils'
|
28
28
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.10.4
|
data/bin/term_colortab
CHANGED
@@ -15,6 +15,32 @@ def print_color(c)
|
|
15
15
|
print ("%3u #{color.rgb.html} " % c).on_color(color.name).color(text.name)
|
16
16
|
end
|
17
17
|
|
18
|
+
if Term::ANSIColor.true_coloring = ENV['COLORTERM'] =~ /\A(truecolor|24bit)\z/
|
19
|
+
|
20
|
+
puts "True colors".bold, ""
|
21
|
+
step = 36
|
22
|
+
(0..255).step(step) do |g|
|
23
|
+
(0..255).step(step) do |r|
|
24
|
+
(0..255).step(step) do |b|
|
25
|
+
print Term::ANSIColor.on_color(Term::ANSIColor::RGBTriple.new(r, g, b)) { ' ' }
|
26
|
+
end
|
27
|
+
print ' '
|
28
|
+
end
|
29
|
+
puts
|
30
|
+
end
|
31
|
+
|
32
|
+
puts
|
33
|
+
(0..255).step(4) do |g|
|
34
|
+
print Term::ANSIColor.on_color(Term::ANSIColor::RGBTriple.new(g, g, g)) { ' ' }
|
35
|
+
end
|
36
|
+
puts
|
37
|
+
puts
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
Term::ANSIColor.true_coloring = false
|
42
|
+
|
43
|
+
puts "256 colors".bold, ""
|
18
44
|
for c in 0..3
|
19
45
|
print_color c
|
20
46
|
end
|
@@ -40,10 +66,10 @@ for c in 16..231
|
|
40
66
|
(c - 16) % 36 == 0 and puts
|
41
67
|
print_color c
|
42
68
|
end
|
69
|
+
puts
|
43
70
|
|
44
71
|
for c in 232..255
|
45
72
|
(c - 16) % 6 == 0 and puts
|
46
|
-
(c - 16) % 12 == 0 and puts
|
47
73
|
print_color c
|
48
74
|
end
|
49
75
|
puts
|
data/bin/term_display
CHANGED
@@ -65,13 +65,14 @@ Options are
|
|
65
65
|
-a ASPECT x:y aspect, defaults to 2.2
|
66
66
|
-C COLS number of columns for rendering with aspect, defaults to max
|
67
67
|
-R ROWS number of rows for rendering with aspect, defaults to max - 1
|
68
|
+
-t use true colors
|
68
69
|
-h this help
|
69
70
|
|
70
71
|
EOT
|
71
72
|
exit rc
|
72
73
|
end
|
73
74
|
|
74
|
-
opts = go 'hm:g:s:a:C:R:'
|
75
|
+
opts = go 'hm:g:s:a:C:R:t'
|
75
76
|
opts['h'] and usage
|
76
77
|
filename = ARGV.shift or usage 1
|
77
78
|
metric = Term::ANSIColor::RGBColorMetrics.metric(opts['m'] || 'CIELab')
|
@@ -84,8 +85,9 @@ opts['R'] ||= [ Tins::Terminal.rows - 1, 0 ].max
|
|
84
85
|
file = provide_ppm_file(filename, opts)
|
85
86
|
ppm = Term::ANSIColor::PPMReader.new(
|
86
87
|
file,
|
87
|
-
:metric
|
88
|
-
:gray
|
88
|
+
metric: metric,
|
89
|
+
gray: gray,
|
90
|
+
true_coloring: opts[?t]
|
89
91
|
)
|
90
92
|
|
91
93
|
puts ppm
|
data/bin/term_mandel
CHANGED
@@ -1,35 +1,32 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'term/ansicolor'
|
4
|
+
include Term::ANSIColor
|
4
5
|
require 'tins/xt'
|
5
|
-
require "complex"
|
6
6
|
include Tins::GO
|
7
|
+
require "complex"
|
7
8
|
|
8
|
-
|
9
|
+
$width, $height = Tins::Terminal.cols, Tins::Terminal.lines
|
10
|
+
$height *= 2
|
9
11
|
|
10
12
|
def color_random
|
11
13
|
(1..3).map { rand(255) }
|
12
14
|
end
|
13
15
|
|
14
16
|
def draw_set(rx, ry)
|
15
|
-
sx = (rx.end - rx.begin).abs /
|
16
|
-
sy = (ry.end - ry.begin).abs /
|
17
|
-
|
18
|
-
|
19
|
-
color =
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
|
24
|
-
ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
|
25
|
-
ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
|
26
|
-
ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
|
27
|
-
ac::Attribute[ color_random ].gradient_to(ac::Attribute['#000'], :steps => 16)
|
17
|
+
sx = (rx.end - rx.begin).abs / $width
|
18
|
+
sy = (ry.end - ry.begin).abs / $height
|
19
|
+
|
20
|
+
steps = 16
|
21
|
+
color = (5.times.map { color_random } + [ 0, 0, 0 ]).map { Attribute[_1] }
|
22
|
+
color = color[1..-1].inject(color[0,1]) { |c, x|
|
23
|
+
c + c.last.gradient_to(x, steps:)
|
24
|
+
}
|
28
25
|
iters = color.size - 2
|
29
26
|
|
30
|
-
|
31
|
-
for j in 0
|
32
|
-
for i in 0
|
27
|
+
data = [ [] ]
|
28
|
+
for j in 0...$height
|
29
|
+
for i in 0...$width
|
33
30
|
n, z_n = 0, Complex(0, 0)
|
34
31
|
c = Complex(sx * i + rx.begin, sy * j + ry.begin)
|
35
32
|
while n <= iters
|
@@ -37,16 +34,25 @@ def draw_set(rx, ry)
|
|
37
34
|
z_n = z_n ** 2 + c
|
38
35
|
n += 1
|
39
36
|
end
|
40
|
-
|
37
|
+
data.last << n
|
41
38
|
end
|
42
|
-
|
39
|
+
data << []
|
43
40
|
end
|
44
|
-
|
41
|
+
screen = ''
|
42
|
+
(0...$height).step(2) do |j|
|
43
|
+
(0...$width).each do |i|
|
44
|
+
screen << color(color[data[j][i]]) <<
|
45
|
+
on_color(color[data[j + 1][i]]) << ?▀
|
46
|
+
end
|
47
|
+
end
|
48
|
+
print move_home, screen, reset
|
45
49
|
end
|
46
50
|
|
47
|
-
opts = go 'x:y
|
51
|
+
opts = go 'x:y'
|
52
|
+
|
53
|
+
Term::ANSIColor.true_coloring = ENV['COLORTERM'] =~ /\A(truecolor|24bit)\z/
|
48
54
|
|
49
|
-
rx = opts[
|
50
|
-
ry = opts[
|
55
|
+
rx = opts[?x].full? { |r| Range.new(*(r.split('..', 2).map(&:to_f))) } || (-2.0..1.0)
|
56
|
+
ry = opts[?y].full? { |r| Range.new(*(r.split('..', 2).map(&:to_f))) } || (-1.0..1.0)
|
51
57
|
|
52
58
|
draw_set rx, ry
|
data/bin/term_snow
CHANGED
@@ -9,23 +9,23 @@ class SnowFlake
|
|
9
9
|
extend Term::ANSIColor
|
10
10
|
|
11
11
|
def initialize(x, y, shape: %w[ ❄ ❅ ❆ • • · · . . ])
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
@x, @y, @shape = x, y, Array(shape).sample
|
13
|
+
@shape.size != 1 and raise ArgumentError, "#@shape needs to be a character"
|
14
|
+
end
|
15
15
|
|
16
|
-
|
16
|
+
attr_accessor :x
|
17
17
|
|
18
|
-
|
18
|
+
attr_accessor :y
|
19
19
|
|
20
|
-
|
20
|
+
attr_accessor :shape
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
def to_s
|
23
|
+
move_to(y, x) { white on_black @shape }
|
24
|
+
end
|
25
25
|
end
|
26
26
|
|
27
|
-
opts
|
28
|
-
new_snowflakes
|
27
|
+
opts = go 'n:s:'
|
28
|
+
new_snowflakes = (opts[?n] || 3).to_i
|
29
29
|
sleep_duration = (opts[?s] || 0.2).to_f
|
30
30
|
|
31
31
|
flakes = []
|
@@ -51,7 +51,7 @@ loop do
|
|
51
51
|
sf.x = SnowFlake.terminal_columns
|
52
52
|
end
|
53
53
|
else
|
54
|
-
sf.x
|
54
|
+
sf.x += 1
|
55
55
|
if sf.x > SnowFlake.terminal_columns
|
56
56
|
sf.x = 1
|
57
57
|
end
|
@@ -64,7 +64,7 @@ loop do
|
|
64
64
|
flakes << SnowFlake.new(rand(1..SnowFlake.terminal_columns), 1)
|
65
65
|
end
|
66
66
|
|
67
|
-
print
|
67
|
+
print(*flakes)
|
68
68
|
|
69
69
|
sleep sleep_duration
|
70
70
|
rescue Interrupt
|
data/examples/example.rb
CHANGED
@@ -76,11 +76,39 @@ print "clear".clear, "reset".reset, "bold".bold, "dark".dark,
|
|
76
76
|
|
77
77
|
symbols = Term::ANSIColor::attributes
|
78
78
|
print red { bold { "All supported attributes = " } },
|
79
|
-
symbols.map { |s| __send__(s, s.inspect) } *
|
79
|
+
symbols.map { |s| __send__(s, s.inspect) } * ",\n", "\n\n"
|
80
80
|
|
81
81
|
print "Send symbols to strings:".send(:red).send(:bold), "\n"
|
82
82
|
print symbols[12, 8].map { |c| c.to_s.send(c) } * '', "\n\n"
|
83
83
|
|
84
|
+
print red { bold { "Use true colors if supported" } }, "\n"
|
85
|
+
|
86
|
+
colors = Term::ANSIColor::Attribute['#ff0000'].gradient_to(
|
87
|
+
Term::ANSIColor::Attribute['#ffff00'],
|
88
|
+
true_coloring: true,
|
89
|
+
step: 16
|
90
|
+
)
|
91
|
+
colors += Term::ANSIColor::Attribute[colors.last].gradient_to(
|
92
|
+
Term::ANSIColor::Attribute['#00ff00'],
|
93
|
+
true_coloring: true,
|
94
|
+
step: 16
|
95
|
+
)
|
96
|
+
colors += Term::ANSIColor::Attribute[colors.last].gradient_to(
|
97
|
+
Term::ANSIColor::Attribute['#00ffff'],
|
98
|
+
true_coloring: true,
|
99
|
+
step: 16
|
100
|
+
)
|
101
|
+
colors += Term::ANSIColor::Attribute[colors.last].gradient_to(
|
102
|
+
Term::ANSIColor::Attribute['#0000ff'],
|
103
|
+
true_coloring: true,
|
104
|
+
step: 16
|
105
|
+
)
|
106
|
+
|
107
|
+
chars = %w[ ⣾ ⣽ ⣻ ⢿ ⡿ ⣟ ⣯ ⣷ ]
|
108
|
+
colors.each_with_index { |c, i| print c.apply { chars[i % chars.size] } }
|
109
|
+
puts
|
110
|
+
puts
|
111
|
+
|
84
112
|
print red { bold { "Make strings monochromatic again:" } }, "\n"
|
85
113
|
print [
|
86
114
|
"red".red,
|
@@ -88,3 +116,5 @@ print [
|
|
88
116
|
uncolored { "not red anymore".red },
|
89
117
|
uncolored("not red anymore".red)
|
90
118
|
].map { |x| x + "\n" } * ''
|
119
|
+
|
120
|
+
puts "Use the " + "Source".hyperlink("https://github.com/flori/term-ansicolor") + ", Luke!"
|
@@ -2,65 +2,67 @@ module Term
|
|
2
2
|
module ANSIColor
|
3
3
|
class Attribute
|
4
4
|
class Color256
|
5
|
-
Attribute.set :color0, 0, :
|
6
|
-
Attribute.set :color1, 1, :
|
7
|
-
Attribute.set :color2, 2, :
|
8
|
-
Attribute.set :color3, 3, :
|
9
|
-
Attribute.set :color4, 4, :
|
10
|
-
Attribute.set :color5, 5, :
|
11
|
-
Attribute.set :color6, 6, :
|
12
|
-
Attribute.set :color7, 7, :
|
5
|
+
Attribute.set :color0, 0, html: '#000000'
|
6
|
+
Attribute.set :color1, 1, html: '#800000'
|
7
|
+
Attribute.set :color2, 2, html: '#008000'
|
8
|
+
Attribute.set :color3, 3, html: '#808000'
|
9
|
+
Attribute.set :color4, 4, html: '#000080'
|
10
|
+
Attribute.set :color5, 5, html: '#800080'
|
11
|
+
Attribute.set :color6, 6, html: '#008080'
|
12
|
+
Attribute.set :color7, 7, html: '#c0c0c0'
|
13
13
|
|
14
|
-
Attribute.set :color8, 8, :
|
15
|
-
Attribute.set :color9, 9, :
|
16
|
-
Attribute.set :color10, 10, :
|
17
|
-
Attribute.set :color11, 11, :
|
18
|
-
Attribute.set :color12, 12, :
|
19
|
-
Attribute.set :color13, 13, :
|
20
|
-
Attribute.set :color14, 14, :
|
21
|
-
Attribute.set :color15, 15, :
|
14
|
+
Attribute.set :color8, 8, html: '#808080'
|
15
|
+
Attribute.set :color9, 9, html: '#ff0000'
|
16
|
+
Attribute.set :color10, 10, html: '#00ff00'
|
17
|
+
Attribute.set :color11, 11, html: '#ffff00'
|
18
|
+
Attribute.set :color12, 12, html: '#0000ff'
|
19
|
+
Attribute.set :color13, 13, html: '#ff00ff'
|
20
|
+
Attribute.set :color14, 14, html: '#00ffff'
|
21
|
+
Attribute.set :color15, 15, html: '#ffffff'
|
22
22
|
|
23
23
|
steps = [ 0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff ]
|
24
24
|
|
25
25
|
for i in 16..231
|
26
26
|
red, green, blue = (i - 16).to_s(6).rjust(3, '0').each_char.map { |c| steps[c.to_i] }
|
27
|
-
Attribute.set "color#{i}", i, :
|
27
|
+
Attribute.set "color#{i}", i, red: red, green: green, blue: blue
|
28
28
|
end
|
29
29
|
|
30
30
|
grey = 8
|
31
31
|
for i in 232..255
|
32
|
-
Attribute.set "color#{i}", i, :
|
32
|
+
Attribute.set "color#{i}", i, red: grey, green: grey, blue: grey
|
33
33
|
grey += 10
|
34
34
|
end
|
35
35
|
|
36
|
-
Attribute.set :on_color0, 0, :
|
37
|
-
Attribute.set :on_color1, 1, :
|
38
|
-
Attribute.set :on_color2, 2, :
|
39
|
-
Attribute.set :on_color3, 3, :
|
40
|
-
Attribute.set :on_color4, 4, :
|
41
|
-
Attribute.set :on_color5, 5, :
|
42
|
-
Attribute.set :on_color6, 6, :
|
43
|
-
Attribute.set :on_color7, 7, :
|
36
|
+
Attribute.set :on_color0, 0, html: '#000000', background: true
|
37
|
+
Attribute.set :on_color1, 1, html: '#800000', background: true
|
38
|
+
Attribute.set :on_color2, 2, html: '#808000', background: true
|
39
|
+
Attribute.set :on_color3, 3, html: '#808000', background: true
|
40
|
+
Attribute.set :on_color4, 4, html: '#000080', background: true
|
41
|
+
Attribute.set :on_color5, 5, html: '#800080', background: true
|
42
|
+
Attribute.set :on_color6, 6, html: '#008080', background: true
|
43
|
+
Attribute.set :on_color7, 7, html: '#c0c0c0'
|
44
44
|
|
45
|
-
Attribute.set :on_color8, 8, :
|
46
|
-
Attribute.set :on_color9, 9, :
|
47
|
-
Attribute.set :on_color10, 10, :
|
48
|
-
Attribute.set :on_color11, 11, :
|
49
|
-
Attribute.set :on_color12, 12, :
|
50
|
-
Attribute.set :on_color13, 13, :
|
51
|
-
Attribute.set :on_color14, 14, :
|
52
|
-
Attribute.set :on_color15, 15, :
|
45
|
+
Attribute.set :on_color8, 8, html: '#808080', background: true
|
46
|
+
Attribute.set :on_color9, 9, html: '#ff0000', background: true
|
47
|
+
Attribute.set :on_color10, 10, html: '#00ff00', background: true
|
48
|
+
Attribute.set :on_color11, 11, html: '#ffff00', background: true
|
49
|
+
Attribute.set :on_color12, 12, html: '#0000ff', background: true
|
50
|
+
Attribute.set :on_color13, 13, html: '#ff00ff', background: true
|
51
|
+
Attribute.set :on_color14, 14, html: '#00ffff', background: true
|
52
|
+
Attribute.set :on_color15, 15, html: '#ffffff', background: true
|
53
53
|
|
54
54
|
steps = [ 0x00, 0x5f, 0x87, 0xaf, 0xd7, 0xff ]
|
55
55
|
|
56
56
|
for i in 16..231
|
57
57
|
red, green, blue = (i - 16).to_s(6).rjust(3, '0').each_char.map { |c| steps[c.to_i] }
|
58
|
-
Attribute.set "on_color#{i}", i,
|
58
|
+
Attribute.set "on_color#{i}", i,
|
59
|
+
red: red, green: green, blue: blue, background: true
|
59
60
|
end
|
60
61
|
|
61
62
|
grey = 8
|
62
63
|
for i in 232..255
|
63
|
-
Attribute.set "on_color#{i}", i,
|
64
|
+
Attribute.set "on_color#{i}", i,
|
65
|
+
red: grey, green: grey, blue: grey, background: true
|
64
66
|
grey += 10
|
65
67
|
end
|
66
68
|
end
|
@@ -2,23 +2,23 @@ module Term
|
|
2
2
|
module ANSIColor
|
3
3
|
class Attribute
|
4
4
|
class Color8
|
5
|
-
Attribute.set :black, 30
|
6
|
-
Attribute.set :red, 31
|
7
|
-
Attribute.set :green, 32
|
8
|
-
Attribute.set :yellow, 33
|
9
|
-
Attribute.set :blue, 34
|
10
|
-
Attribute.set :magenta, 35
|
11
|
-
Attribute.set :cyan, 36
|
12
|
-
Attribute.set :white, 37
|
5
|
+
Attribute.set :black, 30, direct: '#000000'
|
6
|
+
Attribute.set :red, 31, direct: '#800000'
|
7
|
+
Attribute.set :green, 32, direct: '#008000'
|
8
|
+
Attribute.set :yellow, 33, direct: '#808000'
|
9
|
+
Attribute.set :blue, 34, direct: '#000080'
|
10
|
+
Attribute.set :magenta, 35, direct: '#800080'
|
11
|
+
Attribute.set :cyan, 36, direct: '#008080'
|
12
|
+
Attribute.set :white, 37, direct: '#c0c0c0'
|
13
13
|
|
14
|
-
Attribute.set :on_black, 40
|
15
|
-
Attribute.set :on_red, 41
|
16
|
-
Attribute.set :on_green, 42
|
17
|
-
Attribute.set :on_yellow, 43
|
18
|
-
Attribute.set :on_blue, 44
|
19
|
-
Attribute.set :on_magenta, 45
|
20
|
-
Attribute.set :on_cyan, 46
|
21
|
-
Attribute.set :on_white, 47
|
14
|
+
Attribute.set :on_black, 40, direct: '#000000'
|
15
|
+
Attribute.set :on_red, 41, direct: '#800000'
|
16
|
+
Attribute.set :on_green, 42, direct: '#008000'
|
17
|
+
Attribute.set :on_yellow, 43, direct: '#808000'
|
18
|
+
Attribute.set :on_blue, 44, direct: '#000080'
|
19
|
+
Attribute.set :on_magenta, 45, direct: '#800080'
|
20
|
+
Attribute.set :on_cyan, 46, direct: '#008080'
|
21
|
+
Attribute.set :on_white, 47, direct: '#808080'
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -2,41 +2,39 @@ module Term
|
|
2
2
|
module ANSIColor
|
3
3
|
class Attribute
|
4
4
|
class IntenseColor8
|
5
|
-
|
6
|
-
Attribute.set :
|
7
|
-
Attribute.set :
|
8
|
-
Attribute.set :
|
9
|
-
Attribute.set :
|
10
|
-
Attribute.set :
|
11
|
-
Attribute.set :
|
12
|
-
Attribute.set :
|
13
|
-
Attribute.set :
|
14
|
-
Attribute.set :
|
15
|
-
Attribute.set :
|
16
|
-
Attribute.set :
|
17
|
-
Attribute.set :
|
18
|
-
Attribute.set :
|
19
|
-
Attribute.set :
|
20
|
-
Attribute.set :
|
21
|
-
Attribute.set :bright_white, 97
|
5
|
+
Attribute.set :intense_black, 90, direct: '#808080'
|
6
|
+
Attribute.set :bright_black, 90, direct: '#808080'
|
7
|
+
Attribute.set :intense_red, 91, direct: '#ff0000'
|
8
|
+
Attribute.set :bright_red, 91, direct: '#ff0000'
|
9
|
+
Attribute.set :intense_green, 92, direct: '#00ff00'
|
10
|
+
Attribute.set :bright_green, 92, direct: '#00ff00'
|
11
|
+
Attribute.set :intense_yellow, 93, direct: '#ffff00'
|
12
|
+
Attribute.set :bright_yellow, 93, direct: '#ffff00'
|
13
|
+
Attribute.set :intense_blue, 94, direct: '#0000ff'
|
14
|
+
Attribute.set :bright_blue, 94, direct: '#0000ff'
|
15
|
+
Attribute.set :intense_magenta, 95, direct: '#ff00ff'
|
16
|
+
Attribute.set :bright_magenta, 95, direct: '#ff00ff'
|
17
|
+
Attribute.set :intense_cyan, 96, direct: '#00ffff'
|
18
|
+
Attribute.set :bright_cyan, 96, direct: '#00ffff'
|
19
|
+
Attribute.set :intense_white, 97, direct: '#ffffff'
|
20
|
+
Attribute.set :bright_white, 97, direct: '#ffffff'
|
22
21
|
|
23
|
-
|
24
|
-
Attribute.set :
|
25
|
-
Attribute.set :
|
26
|
-
Attribute.set :
|
27
|
-
Attribute.set :
|
28
|
-
Attribute.set :
|
29
|
-
Attribute.set :
|
30
|
-
Attribute.set :
|
31
|
-
Attribute.set :
|
32
|
-
Attribute.set :
|
33
|
-
Attribute.set :
|
34
|
-
Attribute.set :
|
35
|
-
Attribute.set :
|
36
|
-
Attribute.set :
|
37
|
-
Attribute.set :
|
38
|
-
Attribute.set :
|
39
|
-
Attribute.set :on_bright_white, 107
|
22
|
+
Attribute.set :on_intense_black, 100, direct: '#808080'
|
23
|
+
Attribute.set :on_bright_black, 100, direct: '#808080'
|
24
|
+
Attribute.set :on_intense_red, 101, direct: '#ff0000'
|
25
|
+
Attribute.set :on_bright_red, 101, direct: '#ff0000'
|
26
|
+
Attribute.set :on_intense_green, 102, direct: '#00ff00'
|
27
|
+
Attribute.set :on_bright_green, 102, direct: '#00ff00'
|
28
|
+
Attribute.set :on_intense_yellow, 103, direct: '#ffff00'
|
29
|
+
Attribute.set :on_bright_yellow, 103, direct: '#ffff00'
|
30
|
+
Attribute.set :on_intense_blue, 104, direct: '#0000ff'
|
31
|
+
Attribute.set :on_bright_blue, 104, direct: '#0000ff'
|
32
|
+
Attribute.set :on_intense_magenta, 105, direct: '#ff00ff'
|
33
|
+
Attribute.set :on_bright_magenta, 105, direct: '#ff00ff'
|
34
|
+
Attribute.set :on_intense_cyan, 106, direct: '#00ffff'
|
35
|
+
Attribute.set :on_bright_cyan, 106, direct: '#00ffff'
|
36
|
+
Attribute.set :on_intense_white, 107, direct: '#ffffff'
|
37
|
+
Attribute.set :on_bright_white, 107, direct: '#ffffff'
|
40
38
|
end
|
41
39
|
end
|
42
40
|
end
|
@@ -1,22 +1,25 @@
|
|
1
|
+
require 'term/ansicolor/attribute/underline'
|
2
|
+
|
1
3
|
module Term
|
2
4
|
module ANSIColor
|
3
5
|
class Attribute
|
4
6
|
class Text
|
5
|
-
Attribute.set :clear,
|
6
|
-
Attribute.set :reset,
|
7
|
-
Attribute.set :bold,
|
8
|
-
Attribute.set :dark,
|
9
|
-
Attribute.set :faint,
|
10
|
-
Attribute.set :italic,
|
11
|
-
Attribute.set :
|
12
|
-
Attribute.set :
|
13
|
-
Attribute.set :
|
14
|
-
Attribute.set :
|
15
|
-
Attribute.set :
|
16
|
-
Attribute.set :
|
17
|
-
Attribute.set :
|
18
|
-
Attribute.set :
|
19
|
-
|
7
|
+
Attribute.set :clear, 0 # String#clear already used in String
|
8
|
+
Attribute.set :reset, 0 # synonym for :clear
|
9
|
+
Attribute.set :bold, 1
|
10
|
+
Attribute.set :dark, 2
|
11
|
+
Attribute.set :faint, 2
|
12
|
+
Attribute.set :italic, 3 # not widely implemented
|
13
|
+
Attribute.set :blink, 5
|
14
|
+
Attribute.set :rapid_blink, 6 # not widely implemented
|
15
|
+
Attribute.set :reverse, 7 # String#reverse already used in String
|
16
|
+
Attribute.set :negative, 7 # synonym for :reverse
|
17
|
+
Attribute.set :concealed, 8
|
18
|
+
Attribute.set :conceal, 8 # synonym for :concealed
|
19
|
+
Attribute.set :strikethrough, 9 # not widely implemented
|
20
|
+
Attribute.set :overline, 53
|
21
|
+
|
22
|
+
include Term::ANSIColor::Attribute::Underline
|
20
23
|
end
|
21
24
|
end
|
22
25
|
end
|