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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 82f14903202a3f6e83de02c8c2b17784664a57a5cce01527a7d11337ec6a2e1f
4
- data.tar.gz: c5ea599eacc7486ba0688dad5b3263b7aff4e435c5b1af9d93bd519b135162cb
3
+ metadata.gz: d75f19d115fdee4233a120ece01a38b75c7f0cff14243e477def07b314f55b42
4
+ data.tar.gz: 9a3c5f4ac0abbd01a552ce2e5358bd1d3b2825c392495c941209e71cdbfb8e07
5
5
  SHA512:
6
- metadata.gz: 12d9a379cf7b8459f9bafdda098d1ea6b967bb00ad643fd7c5395c9332c958bdca0da8baf7748f3e787359fc5f67cbaaecb8d669a864b47047965144ba536cd6
7
- data.tar.gz: cd51989c8ec30cdfc6dc3ce79e1e8c0e322473cefde6f2b2d757bbce2d76e79e14e5bb551d65fddd46d7a96f9404b89d95bcb3da96101125fb4f1af908276f27
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
@@ -4,5 +4,6 @@
4
4
  .rvmrc
5
5
  Gemfile.lock
6
6
  coverage
7
+ errors.lst
7
8
  pkg
8
9
  tags
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
- * `cdiff`: colors a diff patch
26
- * `decolor`: decolors any text file that was colored with ANSI escape sequences
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 "http://flori.github.com/#{name}"
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.7.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 => metric,
88
- :gray => 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
- @width, @height = Tins::Terminal.cols, Tins::Terminal.lines
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 / @width
16
- sy = (ry.end - ry.begin).abs / @height
17
-
18
- ac = Term::ANSIColor
19
- color =
20
- ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
21
- ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
22
- ac::Attribute[ color_random ].gradient_to(ac::Attribute[ color_random ], :steps => 16) +
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
- text = ''
31
- for j in 0...@height
32
- for i in 0...@width
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
- text << ac.on_color(color[n]) << ' '
37
+ data.last << n
41
38
  end
42
- text << ac.reset << "\n"
39
+ data << []
43
40
  end
44
- puts text
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['x'].full? { |r| Range.new(*(r.split('..', 2).map(&:to_f))) } || (-2.0..1.0)
50
- ry = opts['y'].full? { |r| Range.new(*(r.split('..', 2).map(&:to_f))) } || (-1.0..1.0)
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
- @x, @y, @shape = x, y, Array(shape).sample
13
- @shape.size != 1 and raise ArgumentError, "#@shape needs to be a character"
14
- end
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
- attr_accessor :x
16
+ attr_accessor :x
17
17
 
18
- attr_accessor :y
18
+ attr_accessor :y
19
19
 
20
- attr_accessor :shape
20
+ attr_accessor :shape
21
21
 
22
- def to_s
23
- move_to(y, x) { white on_black @shape }
24
- end
22
+ def to_s
23
+ move_to(y, x) { white on_black @shape }
24
+ end
25
25
  end
26
26
 
27
- opts = go 'n:s:'
28
- new_snowflakes = (opts[?n] || 3).to_i
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 == 1
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 *flakes
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) } * ', ', "\n\n"
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, :html => '#000000'
6
- Attribute.set :color1, 1, :html => '#800000'
7
- Attribute.set :color2, 2, :html => '#808000'
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'
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, :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'
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, :red => red, :green => green, :blue => blue
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, :red => grey, :green => grey, :blue => grey
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, :html => '#000000'
37
- Attribute.set :on_color1, 1, :html => '#800000'
38
- Attribute.set :on_color2, 2, :html => '#808000'
39
- Attribute.set :on_color3, 3, :html => '#808000'
40
- Attribute.set :on_color4, 4, :html => '#000080'
41
- Attribute.set :on_color5, 5, :html => '#800080'
42
- Attribute.set :on_color6, 6, :html => '#008080'
43
- Attribute.set :on_color7, 7, :html => '#c0c0c0'
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, :html => '#808080'
46
- Attribute.set :on_color9, 9, :html => '#ff0000'
47
- Attribute.set :on_color10, 10, :html => '#00ff00'
48
- Attribute.set :on_color11, 11, :html => '#ffff00'
49
- Attribute.set :on_color12, 12, :html => '#0000ff'
50
- Attribute.set :on_color13, 13, :html => '#ff00ff'
51
- Attribute.set :on_color14, 14, :html => '#00ffff'
52
- Attribute.set :on_color15, 15, :html => '#ffffff'
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, :red => red, :green => green, :blue => blue
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, :red => grey, :green => grey, :blue => grey
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
- # High intensity, aixterm (works in OS X)
6
- Attribute.set :intense_black, 90
7
- Attribute.set :bright_black, 90
8
- Attribute.set :intense_red, 91
9
- Attribute.set :bright_red, 91
10
- Attribute.set :intense_green, 92
11
- Attribute.set :bright_green, 92
12
- Attribute.set :intense_yellow, 93
13
- Attribute.set :bright_yellow, 93
14
- Attribute.set :intense_blue, 94
15
- Attribute.set :bright_blue, 94
16
- Attribute.set :intense_magenta, 95
17
- Attribute.set :bright_magenta, 95
18
- Attribute.set :intense_cyan, 96
19
- Attribute.set :bright_cyan, 96
20
- Attribute.set :intense_white, 97
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
- # High intensity background, aixterm (works in OS X)
24
- Attribute.set :on_intense_black, 100
25
- Attribute.set :on_bright_black, 100
26
- Attribute.set :on_intense_red, 101
27
- Attribute.set :on_bright_red, 101
28
- Attribute.set :on_intense_green, 102
29
- Attribute.set :on_bright_green, 102
30
- Attribute.set :on_intense_yellow, 103
31
- Attribute.set :on_bright_yellow, 103
32
- Attribute.set :on_intense_blue, 104
33
- Attribute.set :on_bright_blue, 104
34
- Attribute.set :on_intense_magenta, 105
35
- Attribute.set :on_bright_magenta, 105
36
- Attribute.set :on_intense_cyan, 106
37
- Attribute.set :on_bright_cyan, 106
38
- Attribute.set :on_intense_white, 107
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, 0 # String#clear already used in String
6
- Attribute.set :reset, 0 # synonym for :clear
7
- Attribute.set :bold, 1
8
- Attribute.set :dark, 2
9
- Attribute.set :faint, 2
10
- Attribute.set :italic, 3 # not widely implemented
11
- Attribute.set :underline, 4
12
- Attribute.set :underscore, 4 # synonym for :underline
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
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