colorize 0.8.1 → 1.0.3

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
- SHA1:
3
- metadata.gz: 2f9aa60a1408f5b8cf800bd6d48d0778d6306fdd
4
- data.tar.gz: f08adfa6e15d4bc0eb1f553451d96ecf69070c11
2
+ SHA256:
3
+ metadata.gz: 71f8aba9c90cbf391acaabc470d94e628d66be6df312605d382cb52b09a939af
4
+ data.tar.gz: 8efeb99bf7ae768b0d6bc528048238cf0c62f4280e7237ef78163eb1fb026282
5
5
  SHA512:
6
- metadata.gz: 2d49b0c6362a92b525c7d1fdb0209f6fbfdfc61f720190d75f5ceef96338faa98358ce70e94bfe0a7a86f33f6036ae19e6ca9ce29dbbcfd59b3e2a3ee52d8a72
7
- data.tar.gz: 674694aef0a11430782f9d888b0b39a3365a8730144d0be759151977fd3b30b2a6c2041d8699438d2fbbfe5db57733bc4a018f6a6344a1f3a4cd590d47bf274c
6
+ metadata.gz: 2543e6215f9a15e7f8507e4c9c061aec22f3a2d3f4b4d84949c4805b912728fb9a018a6b3f65fa2aefbdbb878bc1ddc99c6a5e29f83cd8229a5df31edea68c1e
7
+ data.tar.gz: 98c4349e508062160e5a80221eb686dc6fe32ef8f2b90e438cd741c4bd5ddb8dd9c288fb8e0d556aec7a2d25e0ffc47eeee4731439430fc907e0e1d099f40430
data/CHANGELOG.md ADDED
@@ -0,0 +1,85 @@
1
+ # Changelog
2
+
3
+ ## 1.0.3 / 2023-06-21
4
+ - fix ? ommit
5
+
6
+ ## 1.0.2 / 2023-06-21
7
+ - check if color exists when extending class
8
+
9
+ ## 1.0.1 / 2023-06-19
10
+ - fix maching of colorized strings without readline characters
11
+
12
+ ## 1.0.0 / 2023-06-19
13
+ - add more modes
14
+ - add aliases
15
+ - grey and gray default aliases
16
+ - update dependencies
17
+ - add non-visible text delimiters
18
+ - add prevent_color switch
19
+ - cleanup and refactor
20
+
21
+ ## 0.8.1 / 2016-06-29
22
+ - fix gemspec bug
23
+
24
+ ## 0.8.0 / 2016-06-27
25
+ - add ColorizedString class
26
+ - update README file
27
+ - add rubocop.yml and follow style
28
+ - add italic mode
29
+ - remove interpreter warrnings
30
+
31
+ ## 0.7.7 / 2015-04-19
32
+ - update gems
33
+
34
+ ## 0.7.6 / 2015-04-18
35
+ - fix bugs
36
+
37
+ ## 0.7.5 / 2014-12-11
38
+ - big code refactoring
39
+ - disable_colorization feature added
40
+
41
+ ## 0.7.4 / 2014-12-10
42
+ - code cleanups
43
+
44
+ ## 0.7.3 / 2014-05-19
45
+ - fix new line maching
46
+
47
+ ## 0.7.2 / 2014-04-08
48
+ - tests cleanups
49
+ - gem release date fixed
50
+
51
+ ## 0.7.1 / 2014-04-02
52
+ - handling wrong color values
53
+
54
+ ## 0.7.0 / 2014-03-12
55
+ - refactored to use regexp pattern matching
56
+ - works with frozen strings
57
+ - works with concatenated string
58
+
59
+ ## 0.6.0 / 2013-09-25
60
+ - code cleanups
61
+ - bold mode fixed
62
+ - STDOUT.isatty condition removed
63
+ - doc updated
64
+ - jeweler tasks removed
65
+ - Rakefile updated
66
+
67
+ ## 0.5.8 / 2009-12-02
68
+ - code cleanups
69
+ - removed 'ruby -w' warnings
70
+
71
+ ## 0.5.7 / 2009-11-24
72
+ - moved to github/gemcutter
73
+ - 1.9 compatible
74
+
75
+ ## 0.5.6 / 2007-08-27
76
+ - rdocs Allison template
77
+ - cleanups
78
+
79
+ ## 0.5.5 / 2007-08-11
80
+ - added effects methods
81
+ - README files
82
+ - new rake file
83
+
84
+ ## 0.5.0 / 2007-04-22
85
+ - initial rewritten version
data/README.md CHANGED
@@ -1,8 +1,8 @@
1
- colorize [![Gem Version](https://badge.fury.io/rb/colorize.svg)](http://badge.fury.io/rb/colorize) [![Build Status](https://travis-ci.org/fazibear/colorize.svg?branch=master)](https://travis-ci.org/fazibear/colorize) [![Code Climate](https://codeclimate.com/github/fazibear/colorize/badges/gpa.svg)](https://codeclimate.com/github/fazibear/colorize) [![Test Coverage](https://codeclimate.com/github/fazibear/colorize/badges/coverage.svg)](https://codeclimate.com/github/fazibear/colorize)
1
+ colorize [![Gem Version](https://badge.fury.io/rb/colorize.svg)](http://badge.fury.io/rb/colorize) [![Ruby Gem](https://github.com/fazibear/colorize/actions/workflows/release.yml/badge.svg)](https://github.com/fazibear/colorize/actions/workflows/release.yml) [![Code Climate](https://codeclimate.com/github/fazibear/colorize/badges/gpa.svg)](https://codeclimate.com/github/fazibear/colorize) [![Test Coverage](https://codeclimate.com/github/fazibear/colorize/badges/coverage.svg)](https://codeclimate.com/github/fazibear/colorize)
2
2
  ========
3
3
 
4
4
  Ruby gem for colorizing text using ANSI escape sequences.
5
- Extends `String` class or add a `ColorizedString` with methods to set text color, background color and text effects.
5
+ Extends `String` class or add a `ColorizedString` with methods to set the text color, background color and text effects.
6
6
 
7
7
  modes
8
8
  -----
@@ -16,8 +16,10 @@ features
16
16
  * change string color
17
17
  * change string background
18
18
  * change string effect
19
+ * chain methods
19
20
  * display color samples
20
21
  * disable colorization
22
+ * prevent colors
21
23
 
22
24
  usage
23
25
  -----
@@ -29,20 +31,40 @@ String.colors # return array of all possible colors names
29
31
  String.modes # return array of all possible modes
30
32
  String.color_samples # displays color samples in all combinations
31
33
  String.disable_colorization # check if colorization is disabled
34
+
35
+ # disable colorization (false by default)
36
+
32
37
  String.disable_colorization = false # enable colorization
33
38
  String.disable_colorization false # enable colorization
34
39
  String.disable_colorization = true # disable colorization
35
40
  String.disable_colorization true # disable colorization
36
41
 
42
+ # prevent colors (false by default)
43
+
44
+ String.prevent_colors = false # override current string colors
45
+ String.prevent_colors false # override current string colors
46
+ String.prevent_colors = true # don't colorize colorized strings
47
+ String.prevent_colors true # don't colorize colorized strings
48
+
49
+ # adding aliases (:gray and :grey added by default)
50
+
51
+ String.add_color_alias(:niebieski, :blue)
52
+ String.add_color_alias(:zielony => :green)
53
+ String.add_color_alias(czarny: :black)
54
+ String.add_color_alias(czerwony: :red, granatowy: :blue)
55
+
56
+ # examaples
57
+
37
58
  puts "This is blue".colorize(:blue)
38
59
  puts "This is light blue".colorize(:light_blue)
39
60
  puts "This is also blue".colorize(:color => :blue)
61
+ puts "This is bold green".colorize(:color => :green, :mode => :bold)
40
62
  puts "This is light blue with red background".colorize(:color => :light_blue, :background => :red)
41
63
  puts "This is light blue with red background".colorize(:light_blue ).colorize( :background => :red)
42
64
  puts "This is blue text on red".blue.on_red
43
65
  puts "This is red on blue".colorize(:red).on_blue
44
66
  puts "This is red on blue and underline".colorize(:red).on_blue.underline
45
- puts "This is blue text on red".blue.on_red.blink
67
+ puts "This is blinking blue text on red".blue.on_red.blink
46
68
  puts "This is uncolorized".blue.on_red.uncolorize
47
69
  ```
48
70
 
@@ -53,20 +75,40 @@ ColorizedString.colors # return array of all possible colo
53
75
  ColorizedString.modes # return array of all possible modes
54
76
  ColorizedString.color_samples # displays color samples in all combinations
55
77
  ColorizedString.disable_colorization # check if colorization is disabled
78
+
79
+ # disable colorization (false by default)
80
+
56
81
  ColorizedString.disable_colorization = false # enable colorization
57
82
  ColorizedString.disable_colorization false # enable colorization
58
83
  ColorizedString.disable_colorization = true # disable colorization
59
84
  ColorizedString.disable_colorization true # disable colorization
60
85
 
86
+ # prevent colors (false by default)
87
+
88
+ ColorizedString.prevent_colors = false # override current string colors
89
+ ColorizedString.prevent_colors false # override current string colors
90
+ ColorizedString.prevent_colors = true # don't colorize colorized strings
91
+ ColorizedString.prevent_colors true # don't colorize colorized strings
92
+
93
+ # adding aliases (:gray and :grey added by default)
94
+
95
+ ColorizedString.add_color_alias(:niebieski, :blue)
96
+ ColorizedString.add_color_alias(:zielony => :green)
97
+ ColorizedString.add_color_alias(czarny: :black)
98
+ ColorizedString.add_color_alias(czerwony: :red, granatowy: :blue)
99
+
100
+ # examples
101
+
61
102
  puts ColorizedString["This is blue"].colorize(:blue)
62
103
  puts ColorizedString["This is light blue"].colorize(:light_blue)
63
104
  puts ColorizedString["This is also blue"].colorize(:color => :blue)
105
+ puts ColorizedString["This is bold green"].colorize(:color => :green, :mode => :bold)
64
106
  puts ColorizedString["This is light blue with red background"].colorize(:color => :light_blue, :background => :red)
65
107
  puts ColorizedString["This is light blue with red background"].colorize(:light_blue ).colorize( :background => :red)
66
108
  puts ColorizedString["This is blue text on red"].blue.on_red
67
109
  puts ColorizedString["This is red on blue"].colorize(:red).on_blue
68
110
  puts ColorizedString["This is red on blue and underline"].colorize(:red).on_blue.underline
69
- puts ColorizedString["This is blue text on red"].blue.on_red.blink
111
+ puts ColorizedString["This is blinking blue text on red"].blue.on_red.blink
70
112
  puts ColorizedString["This is uncolorized"].blue.on_red.uncolorize
71
113
 
72
114
  puts ColorizedString.new("This is blue").blue
@@ -85,6 +127,11 @@ install
85
127
 
86
128
  *Note:* You may need to use sudo to install gems
87
129
 
130
+ thank you
131
+ ---------
132
+
133
+ [![Become Patreon](https://c5.patreon.com/external/logo/become_a_patron_button.png)](https://www.patreon.com/bePatron?u=6912974)
134
+
88
135
  license
89
136
  -------
90
137
 
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rake/testtask'
2
4
 
3
5
  Rake::TestTask.new do |t|
data/colorize.gemspec CHANGED
@@ -1,12 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('lib/colorize/version', File.dirname(__FILE__))
4
+
1
5
  Gem::Specification.new do |s|
2
6
  s.name = 'colorize'
3
- s.version = '0.8.1'
7
+ s.version = Colorize::VERSION
8
+ s.required_ruby_version = '>= 2.6'
4
9
 
5
10
  s.authors = ['Michał Kalbarczyk']
6
11
  s.email = 'fazibear@gmail.com'
7
12
 
8
- s.date = Time.now.strftime('%Y-%m-%d')
9
-
10
13
  s.homepage = 'http://github.com/fazibear/colorize'
11
14
  s.description = 'Extends String class or add a ColorizedString with methods to set text color, background color and text effects.'
12
15
  s.summary = 'Ruby gem for colorizing text using ANSI escape sequences.'
@@ -14,23 +17,21 @@ Gem::Specification.new do |s|
14
17
 
15
18
  s.require_paths = ['lib']
16
19
 
17
- s.add_development_dependency 'rake', '~> 10.0'
18
- s.add_development_dependency 'minitest', '~> 5.0'
19
- s.add_development_dependency 'codeclimate-test-reporter', '~> 0.4'
20
-
21
20
  s.files = [
22
21
  'LICENSE',
23
- 'CHANGELOG',
22
+ 'CHANGELOG.md',
24
23
  'README.md',
25
24
  'Rakefile',
26
25
  'colorize.gemspec',
27
26
  'lib/colorize.rb',
28
27
  'lib/colorized_string.rb',
28
+ 'lib/colorize/errors.rb',
29
29
  'lib/colorize/class_methods.rb',
30
30
  'lib/colorize/instance_methods.rb',
31
+ 'lib/colorize/version.rb',
31
32
  'test/test_colorize.rb',
33
+ 'test/test_colorized_string.rb',
32
34
  ]
33
- s.test_files = [
34
- 'test/test_colorize.rb'
35
- ]
35
+
36
+ s.metadata['rubygems_mfa_required'] = 'true'
36
37
  end
@@ -1,17 +1,56 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Colorize
2
4
  module ClassMethods
5
+ @@color_codes ||= {
6
+ black: 30,
7
+ red: 31,
8
+ green: 32,
9
+ yellow: 33,
10
+ blue: 34,
11
+ purple: 35,
12
+ cyan: 36,
13
+ white: 37,
14
+ default: 39,
15
+ light_black: 90,
16
+ light_red: 91,
17
+ light_green: 92,
18
+ light_yellow: 93,
19
+ light_blue: 94,
20
+ light_purple: 95,
21
+ light_cyan: 96,
22
+ light_white: 97
23
+ }
24
+
25
+ @@mode_codes ||= {
26
+ default: 0, # Turn off all attributes
27
+ bold: 1,
28
+ dim: 2,
29
+ italic: 3,
30
+ underline: 4,
31
+ blink: 5,
32
+ blink_slow: 5,
33
+ blink_fast: 6,
34
+ invert: 7,
35
+ hide: 8,
36
+ strike: 9,
37
+ double_underline: 20,
38
+ reveal: 28,
39
+ overlined: 53
40
+ }
41
+
3
42
  #
4
- # Property to disable colorization
43
+ # Property for disable colorization
5
44
  #
6
45
  def disable_colorization(value = nil)
7
46
  if value.nil?
8
- if defined?(@disable_colorization)
9
- @disable_colorization || false
47
+ if defined?(@@disable_colorization)
48
+ @@disable_colorization || false
10
49
  else
11
50
  false
12
51
  end
13
52
  else
14
- @disable_colorization = (value || false)
53
+ @@disable_colorization = (value || false)
15
54
  end
16
55
  end
17
56
 
@@ -19,7 +58,29 @@ module Colorize
19
58
  # Setter for disable colorization
20
59
  #
21
60
  def disable_colorization=(value)
22
- @disable_colorization = (value || false)
61
+ @@disable_colorization = (value || false)
62
+ end
63
+
64
+ #
65
+ # Property for prevent recolorization
66
+ #
67
+ def prevent_colors(value = nil)
68
+ if value.nil?
69
+ if defined?(@@prevent_colors)
70
+ @@prevent_colors || false
71
+ else
72
+ false
73
+ end
74
+ else
75
+ @@prevent_colors = (value || false)
76
+ end
77
+ end
78
+
79
+ #
80
+ # Setter for prevent recolorization
81
+ #
82
+ def prevent_colors=(value)
83
+ @@prevent_colors = (value || false)
23
84
  end
24
85
 
25
86
  #
@@ -47,10 +108,16 @@ module Colorize
47
108
  end
48
109
 
49
110
  #
50
- # Method removed, raise NoMethodError
111
+ # Add color alias
51
112
  #
52
- def color_matrix(_ = '')
53
- fail NoMethodError, '#color_matrix method was removed, try #color_samples instead'
113
+ def add_color_alias(*params)
114
+ parse_color_alias_params(params).each do |_alias_, _color_|
115
+ check_if_color_available!(_alias_)
116
+ check_if_color_exist!(_color_)
117
+
118
+ add_color_code(_alias_, color_codes[_color_])
119
+ add_color_method(_alias_)
120
+ end
54
121
  end
55
122
 
56
123
  # private
@@ -59,32 +126,18 @@ module Colorize
59
126
  # Color codes hash
60
127
  #
61
128
  def color_codes
62
- {
63
- :black => 0, :light_black => 60,
64
- :red => 1, :light_red => 61,
65
- :green => 2, :light_green => 62,
66
- :yellow => 3, :light_yellow => 63,
67
- :blue => 4, :light_blue => 64,
68
- :magenta => 5, :light_magenta => 65,
69
- :cyan => 6, :light_cyan => 66,
70
- :white => 7, :light_white => 67,
71
- :default => 9
72
- }
129
+ @@color_codes
130
+ end
131
+
132
+ def add_color_code(code, color)
133
+ @@color_codes[code] = color
73
134
  end
74
135
 
75
136
  #
76
137
  # Mode codes hash
77
138
  #
78
139
  def mode_codes
79
- {
80
- :default => 0, # Turn off all attributes
81
- :bold => 1, # Set bold mode
82
- :italic => 3, # Set italic mode
83
- :underline => 4, # Set underline mode
84
- :blink => 5, # Set blink mode
85
- :swap => 7, # Exchange foreground and background colors
86
- :hide => 8 # Hide text (foreground color would be the same as background)
87
- }
140
+ @@mode_codes
88
141
  end
89
142
 
90
143
  #
@@ -94,13 +147,20 @@ module Colorize
94
147
  colors.each do |key|
95
148
  next if key == :default
96
149
 
97
- define_method key do
98
- colorize(:color => key)
99
- end
150
+ add_color_method(key)
151
+ end
152
+ end
100
153
 
101
- define_method "on_#{key}" do
102
- colorize(:background => key)
103
- end
154
+ #
155
+ # Generate color and on_color method
156
+ #
157
+ def add_color_method(key)
158
+ define_method key do
159
+ colorize(:color => key)
160
+ end
161
+
162
+ define_method "on_#{key}" do
163
+ colorize(:background => key)
104
164
  end
105
165
  end
106
166
 
@@ -116,5 +176,32 @@ module Colorize
116
176
  end
117
177
  end
118
178
  end
179
+
180
+ def parse_color_alias_params(params)
181
+ return [params] if params.is_a?(Array) && params.length == 2
182
+
183
+ params.flat_map do |param|
184
+ next param if param.is_a?(Array) && param.length == 2
185
+ next param.to_a if param.is_a?(Hash)
186
+ end
187
+ end
188
+
189
+ #
190
+ # Check if color exists
191
+ #
192
+ def check_if_color_available!(color)
193
+ color_exist?(color) && fail(::Colorize::ColorAlreadyExist, "Colorize: color named :#{color} already exist!")
194
+ end
195
+
196
+ #
197
+ # Check if color is missing
198
+ #
199
+ def check_if_color_exist!(color)
200
+ color_exist?(color) || fail(::Colorize::ColorDontExist, "Colorize: color :#{color} don't exist!")
201
+ end
202
+
203
+ def color_exist?(color)
204
+ !color_codes[color].nil?
205
+ end
119
206
  end
120
207
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Colorize
4
+ class ColorAlreadyExist < StandardError
5
+ end
6
+
7
+ class ColorDontExist < StandardError
8
+ end
9
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Colorize
2
4
  module InstanceMethods
3
5
  #
@@ -18,11 +20,11 @@ module Colorize
18
20
  #
19
21
  def colorize(params)
20
22
  return self if self.class.disable_colorization
21
- require_windows_libs
23
+
22
24
  scan_for_colors.inject(self.class.new) do |str, match|
23
25
  colors_from_params(match, params)
24
26
  defaults_colors(match)
25
- str << "\033[#{match[0]};#{match[1]};#{match[2]}m#{match[3]}\033[0m"
27
+ str << "\001\033[#{match[0]};#{match[1]};#{match[2]}m\002#{match[3]}\001\033[0m\002"
26
28
  end
27
29
  end
28
30
 
@@ -69,30 +71,40 @@ module Colorize
69
71
  # Set colors from params hash
70
72
  #
71
73
  def colors_from_hash(match, hash)
72
- match[0] = mode(hash[:mode]) if mode(hash[:mode])
73
- match[1] = color(hash[:color]) if color(hash[:color])
74
- match[2] = background_color(hash[:background]) if background_color(hash[:background])
74
+ if self.class.prevent_colors
75
+ match[0] ||= mode(hash[:mode]) if mode(hash[:mode])
76
+ match[1] ||= color(hash[:color]) if color(hash[:color])
77
+ match[2] ||= background_color(hash[:background]) if background_color(hash[:background])
78
+ else
79
+ match[0] = mode(hash[:mode]) if mode(hash[:mode])
80
+ match[1] = color(hash[:color]) if color(hash[:color])
81
+ match[2] = background_color(hash[:background]) if background_color(hash[:background])
82
+ end
75
83
  end
76
84
 
77
85
  #
78
86
  # Set color from params symbol
79
87
  #
80
88
  def color_from_symbol(match, symbol)
81
- match[1] = color(symbol) if color(symbol)
89
+ if self.class.prevent_colors && color(symbol)
90
+ match[1] ||= color(symbol)
91
+ else
92
+ match[1] = color(symbol)
93
+ end
82
94
  end
83
95
 
84
96
  #
85
- # Color for foreground (offset 30)
97
+ # Color for foreground
86
98
  #
87
99
  def color(color)
88
- self.class.color_codes[color] + 30 if self.class.color_codes[color]
100
+ self.class.color_codes[color]
89
101
  end
90
102
 
91
103
  #
92
- # Color for background (offset 40)
104
+ # Color for background (offset 10)
93
105
  #
94
106
  def background_color(color)
95
- self.class.color_codes[color] + 40 if self.class.color_codes[color]
107
+ self.class.color_codes[color] + 10 if self.class.color_codes[color]
96
108
  end
97
109
 
98
110
  #
@@ -106,7 +118,7 @@ module Colorize
106
118
  # Scan for colorized string
107
119
  #
108
120
  def scan_for_colors
109
- scan(/\033\[([0-9;]+)m(.+?)\033\[0m|([^\033]+)/m).map do |match|
121
+ scan(/\001?\033\[([0-9;]+)m\002?(.+?)\001?\033\[0m\002?|([^\001\033]+)/m).map do |match|
110
122
  split_colors(match)
111
123
  end
112
124
  end
@@ -124,7 +136,7 @@ module Colorize
124
136
  # Require windows libs
125
137
  #
126
138
  def require_windows_libs
127
- require 'Win32/Console/ANSI' if RUBY_VERSION < '2.0.0' && RUBY_PLATFORM =~ /win32/
139
+ require 'Win32/Console/ANSI' if RUBY_VERSION < '2.0.0' && RUBY_PLATFORM.include?('win32')
128
140
  rescue LoadError
129
141
  raise 'You must gem install win32console to use colorize on Windows'
130
142
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Gem version
5
+ #
6
+ module Colorize
7
+ VERSION = '1.0.3'
8
+ end
data/lib/colorize.rb CHANGED
@@ -1,5 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('colorize/version', File.dirname(__FILE__))
4
+ require File.expand_path('colorize/errors', File.dirname(__FILE__))
1
5
  require File.expand_path('colorize/class_methods', File.dirname(__FILE__))
2
6
  require File.expand_path('colorize/instance_methods', File.dirname(__FILE__))
7
+
3
8
  #
4
9
  # String class extension.
5
10
  #
@@ -9,4 +14,7 @@ class String
9
14
 
10
15
  color_methods
11
16
  modes_methods
17
+
18
+ add_color_alias(:grey, :light_black) unless color_exist?(:grey)
19
+ add_color_alias(:gray, :light_black) unless color_exist?(:gray)
12
20
  end
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require File.expand_path('colorize/errors', File.dirname(__FILE__))
1
4
  require File.expand_path('colorize/class_methods', File.dirname(__FILE__))
2
5
  require File.expand_path('colorize/instance_methods', File.dirname(__FILE__))
3
6
  #
@@ -10,8 +13,11 @@ class ColorizedString < String
10
13
  color_methods
11
14
  modes_methods
12
15
 
16
+ add_color_alias(:grey, :light_black) unless color_exist?(:grey)
17
+ add_color_alias(:gray, :light_black) unless color_exist?(:gray)
18
+
13
19
  #
14
- # Sortcut to create ColorizedString with ColorizedString['test'].
20
+ # Shortcut to create ColorizedString with ColorizedString['test'].
15
21
  #
16
22
  def self.[](string)
17
23
  ColorizedString.new(string)
@@ -1,153 +1,128 @@
1
- require 'codeclimate-test-reporter'
2
- CodeClimate::TestReporter.start
1
+ # frozen_string_literal: true
3
2
 
4
3
  require 'minitest/autorun'
5
- require File.dirname(__FILE__) + '/../lib/colorize'
4
+ require "#{File.dirname(__FILE__)}/../lib/colorize"
6
5
 
7
6
  class TestColorize < Minitest::Test
8
7
  def test_blue_symbol
9
- assert_equal 'This is blue'.colorize(:blue),
10
- "\e[0;34;49mThis is blue\e[0m"
8
+ assert_equal "\001\033[0;34;49m\002This is blue\001\033[0m\002", 'This is blue'.colorize(:blue)
11
9
  end
12
10
 
13
11
  def test_incorrect_symbol
14
- assert_equal 'This is incorrect color'.colorize(:bold),
15
- "\e[0;39;49mThis is incorrect color\e[0m"
12
+ assert_equal "\001\033[0;39;49m\002This is incorrect color\001\033[0m\002", 'This is incorrect color'.colorize(:bold)
16
13
  end
17
14
 
18
15
  def test_incorrect_hash
19
- assert_equal 'This is incorrect color'.colorize(:color => :bold),
20
- "\e[0;39;49mThis is incorrect color\e[0m"
16
+ assert_equal "\001\033[0;39;49m\002This is incorrect color\001\033[0m\002", 'This is incorrect color'.colorize(:color => :bold)
21
17
 
22
- assert_equal 'This is incorrect color'.colorize(:mode => :green),
23
- "\e[0;39;49mThis is incorrect color\e[0m"
18
+ assert_equal "\001\033[0;39;49m\002This is incorrect color\001\033[0m\002", 'This is incorrect color'.colorize(:mode => :green)
24
19
 
25
- assert_equal 'This is incorrect color'.colorize(:background => :bold),
26
- "\e[0;39;49mThis is incorrect color\e[0m"
20
+ assert_equal "\001\033[0;39;49m\002This is incorrect color\001\033[0m\002", 'This is incorrect color'.colorize(:background => :bold)
27
21
  end
28
22
 
29
23
  def test_blue_hash
30
- assert_equal 'This is also blue'.colorize(:color => :blue),
31
- "\e[0;34;49mThis is also blue\e[0m"
24
+ assert_equal "\001\033[0;34;49m\002This is also blue?\001\033[0m\002", 'This is also blue?'.colorize(:color => :blue)
32
25
  end
33
26
 
34
27
  def test_light_blue_symbol
35
- assert_equal 'This is light blue'.colorize(:light_blue),
36
- "\e[0;94;49mThis is light blue\e[0m"
28
+ assert_equal "\001\033[0;94;49m\002This is light blue\001\033[0m\002", 'This is light blue'.colorize(:light_blue)
37
29
  end
38
30
 
39
31
  def test_light_blue_with_red_background_hash
40
- assert_equal 'This is light blue with red background'.colorize(:color => :light_blue, :background => :red),
41
- "\e[0;94;41mThis is light blue with red background\e[0m"
32
+ assert_equal "\001\033[0;94;41m\002This is light blue with red background\001\033[0m\002", 'This is light blue with red background'.colorize(:color => :light_blue, :background => :red)
42
33
  end
43
34
 
44
35
  def test_light_blue_with_red_background_symbol_and_hash
45
- assert_equal 'This is light blue with red background'.colorize(:light_blue).colorize(:background => :red),
46
- "\e[0;94;41mThis is light blue with red background\e[0m"
36
+ assert_equal "\001\033[0;94;41m\002This is light blue with red background\001\033[0m\002", 'This is light blue with red background'.colorize(:light_blue).colorize(:background => :red)
47
37
  end
48
38
 
49
39
  def test_blue_with_red_background_method
50
- assert_equal 'This is blue text on red'.blue.on_red,
51
- "\e[0;34;41mThis is blue text on red\e[0m"
40
+ assert_equal "\001\033[0;34;41m\002This is blue text on red\001\033[0m\002", 'This is blue text on red'.blue.on_red
52
41
  end
53
42
 
54
43
  def test_red_with_blue_background_symbol_and_method
55
- assert_equal 'This is red on blue'.colorize(:red).on_blue,
56
- "\e[0;31;44mThis is red on blue\e[0m"
44
+ assert_equal "\001\033[0;31;44m\002This is red on blue\001\033[0m\002", 'This is red on blue'.colorize(:red).on_blue
57
45
  end
58
46
 
59
- def test_red_with_blue_background_and_underline_sumbol_and_methods
60
- assert_equal 'This is red on blue and underline'.colorize(:red).on_blue.underline,
61
- "\e[4;31;44mThis is red on blue and underline\e[0m"
47
+ def test_red_with_blue_background_and_underline_symbol_and_methods
48
+ assert_equal "\001\033[4;31;44m\002This is red on blue and underline\001\033[0m\002", 'This is red on blue and underline'.colorize(:red).on_blue.underline
62
49
  end
63
50
 
64
51
  def test_blue_with_red_background_and_blink_methods
65
- assert_equal 'This is blue text on red'.blue.on_red.blink,
66
- "\e[5;34;41mThis is blue text on red\e[0m"
52
+ assert_equal "\001\033[5;34;41m\002This is blue text on red\001\033[0m\002", 'This is blue text on red'.blue.on_red.blink
67
53
  end
68
54
 
69
55
  def test_uncolorize
70
- assert_equal 'This is uncolorized'.blue.on_red.uncolorize,
71
- 'This is uncolorized'
56
+ assert_equal 'This is uncolorized', 'This is uncolorized'.blue.on_red.uncolorize
72
57
  end
73
58
 
74
59
  def test_colorized?
75
- assert_equal 'Red'.red.colorized?, true
76
- assert_equal 'Blue'.colorized?, false
77
- assert_equal 'Green'.blue.green.uncolorize.colorized?, false
60
+ assert_predicate 'Red'.red, :colorized?
61
+ refute_predicate 'Blue', :colorized?
62
+ refute_predicate 'Green'.blue.green.uncolorize, :colorized?
78
63
  end
79
64
 
80
65
  def test_concatenated__colorize?
81
- assert_equal "none #{'red'.red} none #{'blue'.blue} none".colorized?, true
82
- assert_equal "none #{'red'.red} none #{'blue'.blue} none".uncolorize.colorized?, false
66
+ assert_predicate "none #{'red'.red} none #{'blue'.blue} none", :colorized?
67
+ refute_predicate "none #{'red'.red} none #{'blue'.blue} none".uncolorize, :colorized?
83
68
  end
84
69
 
85
70
  def test_concatenated_strings_on_green
86
- assert_equal "none #{'red'.red} none #{'blue'.blue} none".on_green,
87
- "\e[0;39;42mnone \e[0m\e[0;31;42mred\e[0m\e[0;39;42m none \e[0m\e[0;34;42mblue\e[0m\e[0;39;42m none\e[0m"
71
+ assert_equal "\001\033[0;39;42m\002none \001\033[0m\002\001\033[0;31;42m\002red\001\033[0m\002\001\033[0;39;42m\002 none \001\033[0m\002\001\033[0;34;42m\002blue\001\033[0m\002\001\033[0;39;42m\002 none\001\033[0m\002", "none #{'red'.red} none #{'blue'.blue} none".on_green
88
72
  end
89
73
 
90
74
  def test_concatenated_strings_uncolorize
91
- assert_equal "none #{'red'.red} none #{'blue'.blue} none".uncolorize,
92
- 'none red none blue none'
93
- end
94
-
95
- def test_frozen_strings
96
- assert_equal 'This is blue text on red'.freeze.blue.on_red.blink,
97
- "\e[5;34;41mThis is blue text on red\e[0m"
75
+ assert_equal 'none red none blue none', "none #{'red'.red} none #{'blue'.blue} none".uncolorize
98
76
  end
99
77
 
100
78
  def test_new_line
101
- assert_equal "This is blue\ntext on red".freeze.blue.on_red.blink,
102
- "\e[5;34;41mThis is blue\ntext on red\e[0m"
79
+ assert_equal "\001\033[5;34;41m\002This is blue\ntext on red\001\033[0m\002", "This is blue\ntext on red".blue.on_red.blink
103
80
  end
104
81
 
105
82
  def test_disable_colorization_with_=
106
83
  String.disable_colorization = true
107
- assert_equal String.disable_colorization, true
84
+
85
+ assert String.disable_colorization
86
+
108
87
  String.disable_colorization = false
109
88
  end
110
89
 
111
90
  def test_disable_colorization_with_method
112
91
  String.disable_colorization true
113
- assert_equal String.disable_colorization, true
92
+
93
+ assert String.disable_colorization
94
+
114
95
  String.disable_colorization false
115
96
  end
116
97
 
117
98
  def test_string_disable_colorization_with_=
118
99
  String.disable_colorization = true
119
100
 
120
- assert_equal String.disable_colorization, true
101
+ assert String.disable_colorization
121
102
 
122
- assert_equal 'This is blue after disabling'.blue,
123
- 'This is blue after disabling'
103
+ assert_equal 'This is blue after disabling', 'This is blue after disabling'.blue
124
104
 
125
105
  String.disable_colorization = false
126
106
 
127
- assert_equal 'This is blue after enabling'.colorize(:blue),
128
- "\e[0;34;49mThis is blue after enabling\e[0m"
107
+ assert_equal "\001\033[0;34;49m\002This is blue after enabling\001\033[0m\002", 'This is blue after enabling'.colorize(:blue)
129
108
  end
130
109
 
131
110
  def test_string_disable_colorization_with_method
132
- assert_equal 'This is blue before disabling'.colorize(:blue),
133
- "\e[0;34;49mThis is blue before disabling\e[0m"
111
+ assert_equal "\001\033[0;34;49m\002This is blue before disabling\001\033[0m\002", 'This is blue before disabling'.colorize(:blue)
134
112
 
135
113
  String.disable_colorization true
136
114
 
137
- assert_equal String.disable_colorization, true
115
+ assert String.disable_colorization
138
116
 
139
- assert_equal 'This is blue after disabling'.blue,
140
- 'This is blue after disabling'
117
+ assert_equal 'This is blue after disabling', 'This is blue after disabling'.blue
141
118
 
142
119
  String.disable_colorization false
143
120
 
144
- assert_equal 'This is blue after enabling'.colorize(:blue),
145
- "\e[0;34;49mThis is blue after enabling\e[0m"
121
+ assert_equal "\001\033[0;34;49m\002This is blue after enabling\001\033[0m\002", 'This is blue after enabling'.colorize(:blue)
146
122
  end
147
123
 
148
124
  def test_already_colored_string_with_one_value
149
- assert_equal "\e[31mThis is red\e[0m".red,
150
- 'This is red'.red
125
+ assert_equal 'This is red'.red, "\001\033[31m\002This is red\001\033[0m\002".red
151
126
  end
152
127
 
153
128
  def test_color_matrix_method
@@ -161,4 +136,79 @@ class TestColorize < Minitest::Test
161
136
  String.color_samples
162
137
  end
163
138
  end
139
+
140
+ def test_grey_alias
141
+ assert_equal 'This is grey'.grey, 'This is grey'.light_black
142
+ end
143
+
144
+ def test_gray_alias
145
+ assert_equal 'This is gray'.gray, 'This is gray'.light_black
146
+ end
147
+
148
+ def test_add_color_alias
149
+ String.add_color_alias(:extra_blue, :light_blue)
150
+
151
+ assert_equal 'blue'.light_blue, 'blue'.extra_blue
152
+ assert_equal 'blue'.on_light_blue, 'blue'.on_extra_blue
153
+ end
154
+
155
+ def test_add_color_alias_errors
156
+ String.add_color_alias(:extra_red, :light_red)
157
+
158
+ assert_raises ::Colorize::ColorAlreadyExist, 'Colorize: color :extra_red already exist!' do
159
+ String.add_color_alias(:extra_red, :light_blue)
160
+ end
161
+
162
+ assert_raises ::Colorize::ColorDontExist, 'Colorize: color :light_color don\'t exist!' do
163
+ String.add_color_alias(:extra_white, :light_color)
164
+ end
165
+ end
166
+
167
+ def test_add_color_alias_with_single_hash
168
+ String.add_color_alias(extra_green: :light_green)
169
+
170
+ assert_equal 'example string'.light_green, 'example string'.extra_green
171
+ assert_equal 'example string'.on_light_green, 'example string'.on_extra_green
172
+ end
173
+
174
+ def test_add_color_alias_with_single_hash_with_arrow
175
+ String.add_color_alias(:extra_color => :gray)
176
+
177
+ assert_equal 'example string'.gray, 'example string'.extra_color
178
+ assert_equal 'example string'.on_gray, 'example string'.on_extra_color
179
+ end
180
+
181
+ def test_add_color_alias_with_multi_hash
182
+ String.add_color_alias(extra_color_a: :gray, extra_color_b: :blue)
183
+
184
+ assert_equal 'example string'.gray, 'example string'.extra_color_a
185
+ assert_equal 'example string'.blue, 'example string'.extra_color_b
186
+ end
187
+
188
+ def test_add_color_alias_with_multi_hash_with_arrow
189
+ String.add_color_alias(:extra_color_c => :gray, :extra_color_d => :blue)
190
+
191
+ assert_equal 'example string'.gray, 'example string'.extra_color_c
192
+ assert_equal 'example string'.on_blue, 'example string'.on_extra_color_d
193
+ end
194
+
195
+ def test_add_color_alias_with_multi_hash_mixed
196
+ String.add_color_alias(extra_color_e: :gray, :extra_color_f => :blue)
197
+
198
+ assert_equal 'example string'.gray, 'example string'.extra_color_e
199
+ assert_equal 'example string'.on_blue, 'example string'.on_extra_color_f
200
+ end
201
+
202
+ def test_prevent_colors
203
+ String.prevent_colors true
204
+
205
+ assert String.prevent_colors
206
+ assert_equal "#{'blue'.blue}#{'red'.red}#{'green'.green}", "#{'blue'.blue}red#{'green'.green}".red
207
+
208
+ String.prevent_colors false
209
+ end
210
+
211
+ def test_colorized_string_without_readline
212
+ assert_equal "\e[0;31;49mgreen\e[0m".green, 'green'.green
213
+ end
164
214
  end
@@ -0,0 +1,216 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'minitest/autorun'
4
+ require "#{File.dirname(__FILE__)}/../lib/colorized_string"
5
+
6
+ class TestColorizedString < Minitest::Test
7
+ def test_colorize_not_required
8
+ refute_respond_to '', :colorize, 'Colorize should not be required. Only colorized_string'
9
+ end
10
+
11
+ def test_blue_symbol
12
+ assert_equal "\001\033[0;34;49m\002This is blue\001\033[0m\002", ColorizedString['This is blue'].colorize(:blue)
13
+ end
14
+
15
+ def test_incorrect_symbol
16
+ assert_equal "\001\033[0;39;49m\002This is incorrect color\001\033[0m\002", ColorizedString['This is incorrect color'].colorize(:bold)
17
+ end
18
+
19
+ def test_incorrect_hash
20
+ assert_equal "\001\033[0;39;49m\002This is incorrect color\001\033[0m\002", ColorizedString['This is incorrect color'].colorize(:color => :bold)
21
+
22
+ assert_equal "\001\033[0;39;49m\002This is incorrect color\001\033[0m\002", ColorizedString['This is incorrect color'].colorize(:mode => :green)
23
+
24
+ assert_equal "\001\033[0;39;49m\002This is incorrect color\001\033[0m\002", ColorizedString['This is incorrect color'].colorize(:background => :bold)
25
+ end
26
+
27
+ def test_blue_hash
28
+ assert_equal "\001\033[0;34;49m\002This is also blue\001\033[0m\002", ColorizedString['This is also blue'].colorize(:color => :blue)
29
+ end
30
+
31
+ def test_light_blue_symbol
32
+ assert_equal "\001\033[0;94;49m\002This is light blue\001\033[0m\002", ColorizedString['This is light blue'].colorize(:light_blue)
33
+ end
34
+
35
+ def test_light_blue_with_red_background_hash
36
+ assert_equal "\001\033[0;94;41m\002This is light blue with red background\001\033[0m\002", ColorizedString['This is light blue with red background'].colorize(:color => :light_blue, :background => :red)
37
+ end
38
+
39
+ def test_light_blue_with_red_background_symbol_and_hash
40
+ assert_equal "\001\033[0;94;41m\002This is light blue with red background\001\033[0m\002", ColorizedString['This is light blue with red background'].colorize(:light_blue).colorize(:background => :red)
41
+ end
42
+
43
+ def test_blue_with_red_background_method
44
+ assert_equal "\001\033[0;34;41m\002This is blue text on red\001\033[0m\002", ColorizedString['This is blue text on red'].blue.on_red
45
+ end
46
+
47
+ def test_red_with_blue_background_symbol_and_method
48
+ assert_equal "\001\033[0;31;44m\002This is red on blue\001\033[0m\002", ColorizedString['This is red on blue'].colorize(:red).on_blue
49
+ end
50
+
51
+ def test_red_with_blue_background_and_underline_sumbol_and_methods
52
+ assert_equal "\001\033[4;31;44m\002This is red on blue and underline\001\033[0m\002", ColorizedString['This is red on blue and underline'].colorize(:red).on_blue.underline
53
+ end
54
+
55
+ def test_blue_with_red_background_and_blink_methods
56
+ assert_equal "\001\033[5;34;41m\002This is blue text on red\001\033[0m\002", ColorizedString['This is blue text on red'].blue.on_red.blink
57
+ end
58
+
59
+ def test_uncolorize
60
+ assert_equal 'This is uncolorized', ColorizedString['This is uncolorized'].blue.on_red.uncolorize
61
+ end
62
+
63
+ def test_colorized?
64
+ assert_predicate ColorizedString['Red'].red, :colorized?
65
+ refute_predicate ColorizedString['Blue'], :colorized?
66
+ refute_predicate ColorizedString['Green'].blue.green.uncolorize, :colorized?
67
+ end
68
+
69
+ def test_concatenated__colorize?
70
+ assert_predicate ColorizedString["none #{ColorizedString['red'].red} none #{ColorizedString['blue'].blue} none"], :colorized?
71
+ refute_predicate ColorizedString["none #{ColorizedString['red'].red} none #{ColorizedString['blue'].blue} none"].uncolorize, :colorized?
72
+ end
73
+
74
+ def test_concatenated_strings_on_green
75
+ assert_equal "\001\033[0;39;42m\002none \001\033[0m\002\001\033[0;31;42m\002red\001\033[0m\002\001\033[0;39;42m\002 none \001\033[0m\002\001\033[0;34;42m\002blue\001\033[0m\002\001\033[0;39;42m\002 none\001\033[0m\002", ColorizedString["none #{ColorizedString['red'].red} none #{ColorizedString['blue'].blue} none"].on_green
76
+ end
77
+
78
+ def test_concatenated_strings_uncolorize
79
+ assert_equal 'none red none blue none', ColorizedString["none #{ColorizedString['red'].red} none #{ColorizedString['blue'].blue} none"].uncolorize
80
+ end
81
+
82
+ def test_frozen_strings
83
+ assert_equal "\001\033[5;34;41m\002This is blue text on red\001\033[0m\002", ColorizedString['This is blue text on red'].freeze.blue.on_red.blink
84
+ end
85
+
86
+ def test_new_line
87
+ assert_equal "\001\033[5;34;41m\002This is blue\ntext on red\001\033[0m\002", ColorizedString["This is blue\ntext on red"].freeze.blue.on_red.blink
88
+ end
89
+
90
+ def test_disable_colorization_with_=
91
+ ColorizedString.disable_colorization = true
92
+
93
+ assert ColorizedString.disable_colorization
94
+
95
+ ColorizedString.disable_colorization = false
96
+ end
97
+
98
+ def test_disable_colorization_with_method
99
+ ColorizedString.disable_colorization true
100
+
101
+ assert ColorizedString.disable_colorization
102
+
103
+ ColorizedString.disable_colorization false
104
+ end
105
+
106
+ def test_string_disable_colorization_with_=
107
+ ColorizedString.disable_colorization = true
108
+
109
+ assert ColorizedString.disable_colorization
110
+
111
+ assert_equal 'This is blue after disabling', ColorizedString['This is blue after disabling'].blue
112
+
113
+ ColorizedString.disable_colorization = false
114
+
115
+ assert_equal "\001\033[0;34;49m\002This is blue after enabling\001\033[0m\002", ColorizedString['This is blue after enabling'].colorize(:blue)
116
+ end
117
+
118
+ def test_string_disable_colorization_with_method
119
+ assert_equal "\001\033[0;34;49m\002This is blue before disabling\001\033[0m\002", ColorizedString['This is blue before disabling'].colorize(:blue)
120
+
121
+ ColorizedString.disable_colorization true
122
+
123
+ assert ColorizedString.disable_colorization
124
+
125
+ assert_equal 'This is blue after disabling', ColorizedString['This is blue after disabling'].blue
126
+
127
+ ColorizedString.disable_colorization false
128
+
129
+ assert_equal "\001\033[0;34;49m\002This is blue after enabling\001\033[0m\002", ColorizedString['This is blue after enabling'].colorize(:blue)
130
+ end
131
+
132
+ def test_already_colored_string_with_one_value
133
+ assert_equal ColorizedString['This is red'].red, ColorizedString["\001\033[31m\002This is red\001\033[0m\002"].red
134
+ end
135
+
136
+ def test_color_matrix_method
137
+ assert_raises(NoMethodError) { ColorizedString.color_matrix }
138
+ end
139
+
140
+ def test_color_samples_method
141
+ assert_output do
142
+ ColorizedString.color_samples
143
+ end
144
+ end
145
+
146
+ def test_grey_alias
147
+ assert_equal ColorizedString['This is grey'].grey, ColorizedString['This is grey'].light_black
148
+ end
149
+
150
+ def test_gray_alias
151
+ assert_equal ColorizedString['This is gray'].gray, ColorizedString['This is gray'].light_black
152
+ end
153
+
154
+ def test_add_color_alias
155
+ ColorizedString.add_color_alias(:extra_blue, :light_blue)
156
+
157
+ assert_equal ColorizedString['blue'].light_blue, ColorizedString['blue'].extra_blue
158
+ assert_equal ColorizedString['blue'].on_light_blue, ColorizedString['blue'].on_extra_blue
159
+
160
+ assert_raises ::Colorize::ColorAlreadyExist, 'Colorize: color :extra_blue already exist!' do
161
+ ColorizedString.add_color_alias(:extra_blue, :light_color)
162
+ end
163
+
164
+ assert_raises ::Colorize::ColorDontExist, 'Colorize: color :light_color don\'t exist!' do
165
+ ColorizedString.add_color_alias(:extra_white, :light_color)
166
+ end
167
+ end
168
+
169
+ def test_add_color_alias_with_single_hash
170
+ ColorizedString.add_color_alias(extra_green: :light_green)
171
+
172
+ assert_equal ColorizedString['example string'].light_green, ColorizedString['example string'].extra_green
173
+ assert_equal ColorizedString['example string'].on_light_green, ColorizedString['example string'].on_extra_green
174
+ end
175
+
176
+ def test_add_color_alias_with_single_hash_with_arrow
177
+ ColorizedString.add_color_alias(:extra_color => :gray)
178
+
179
+ assert_equal ColorizedString['example string'].gray, ColorizedString['example string'].extra_color
180
+ assert_equal ColorizedString['example string'].on_gray, ColorizedString['example string'].on_extra_color
181
+ end
182
+
183
+ def test_add_color_alias_with_multi_hash
184
+ ColorizedString.add_color_alias(extra_color_a: :gray, extra_color_b: :blue)
185
+
186
+ assert_equal ColorizedString['example string'].gray, ColorizedString['example string'].extra_color_a
187
+ assert_equal ColorizedString['example string'].blue, ColorizedString['example string'].extra_color_b
188
+ end
189
+
190
+ def test_add_color_alias_with_multi_hash_with_arrow
191
+ ColorizedString.add_color_alias(:extra_color_c => :gray, :extra_color_d => :blue)
192
+
193
+ assert_equal ColorizedString['example string'].gray, ColorizedString['example string'].extra_color_c
194
+ assert_equal ColorizedString['example string'].on_blue, ColorizedString['example string'].on_extra_color_d
195
+ end
196
+
197
+ def test_add_color_alias_with_multi_hash_mixed
198
+ ColorizedString.add_color_alias(extra_color_e: :gray, :extra_color_f => :blue)
199
+
200
+ assert_equal ColorizedString['example string'].gray, ColorizedString['example string'].extra_color_e
201
+ assert_equal ColorizedString['example string'].on_blue, ColorizedString['example string'].on_extra_color_f
202
+ end
203
+
204
+ def test_prevent_colors
205
+ ColorizedString.prevent_colors true
206
+
207
+ assert ColorizedString.prevent_colors
208
+ assert_equal "#{ColorizedString['blue'].blue}#{ColorizedString['red'].red}#{ColorizedString['green'].green}", ColorizedString["#{ColorizedString['blue'].blue}red#{ColorizedString['green'].green}"].red
209
+
210
+ ColorizedString.prevent_colors false
211
+ end
212
+
213
+ def test_colorized_string_without_readline
214
+ assert_equal ColorizedString["\e[0;31;49mgreen\e[0m"].green, ColorizedString['green'].green
215
+ end
216
+ end
metadata CHANGED
@@ -1,57 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: colorize
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michał Kalbarczyk
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-29 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '10.0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '10.0'
27
- - !ruby/object:Gem::Dependency
28
- name: minitest
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '5.0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '5.0'
41
- - !ruby/object:Gem::Dependency
42
- name: codeclimate-test-reporter
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '0.4'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '0.4'
11
+ date: 2023-06-21 00:00:00.000000000 Z
12
+ dependencies: []
55
13
  description: Extends String class or add a ColorizedString with methods to set text
56
14
  color, background color and text effects.
57
15
  email: fazibear@gmail.com
@@ -59,21 +17,25 @@ executables: []
59
17
  extensions: []
60
18
  extra_rdoc_files: []
61
19
  files:
62
- - CHANGELOG
20
+ - CHANGELOG.md
63
21
  - LICENSE
64
22
  - README.md
65
23
  - Rakefile
66
24
  - colorize.gemspec
67
25
  - lib/colorize.rb
68
26
  - lib/colorize/class_methods.rb
27
+ - lib/colorize/errors.rb
69
28
  - lib/colorize/instance_methods.rb
29
+ - lib/colorize/version.rb
70
30
  - lib/colorized_string.rb
71
31
  - test/test_colorize.rb
32
+ - test/test_colorized_string.rb
72
33
  homepage: http://github.com/fazibear/colorize
73
34
  licenses:
74
35
  - GPL-2.0
75
- metadata: {}
76
- post_install_message:
36
+ metadata:
37
+ rubygems_mfa_required: 'true'
38
+ post_install_message:
77
39
  rdoc_options: []
78
40
  require_paths:
79
41
  - lib
@@ -81,17 +43,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
43
  requirements:
82
44
  - - ">="
83
45
  - !ruby/object:Gem::Version
84
- version: '0'
46
+ version: '2.6'
85
47
  required_rubygems_version: !ruby/object:Gem::Requirement
86
48
  requirements:
87
49
  - - ">="
88
50
  - !ruby/object:Gem::Version
89
51
  version: '0'
90
52
  requirements: []
91
- rubyforge_project:
92
- rubygems_version: 2.5.1
93
- signing_key:
53
+ rubygems_version: 3.4.14
54
+ signing_key:
94
55
  specification_version: 4
95
56
  summary: Ruby gem for colorizing text using ANSI escape sequences.
96
- test_files:
97
- - test/test_colorize.rb
57
+ test_files: []
data/CHANGELOG DELETED
@@ -1,65 +0,0 @@
1
- == 0.8.1 / 2016-06-29
2
- * fix gemspec bug
3
-
4
- == 0.8.0 / 2016-06-27
5
- * add ColorizedString class
6
- * update README file
7
- * add rubocop.yml and follow style
8
- * add italic mode
9
- * remove interpreter warrnings
10
-
11
- == 0.7.7 / 2015-04-19
12
- * update gems
13
-
14
- == 0.7.6 / 2015-04-18
15
- * fix bugs
16
-
17
- == 0.7.5 / 2014-12-11
18
- * big code refactoring
19
- * disable_colorization feature added
20
-
21
- == 0.7.4 / 2014-12-10
22
- * code cleanups
23
-
24
- == 0.7.3 / 2014-05-19
25
- * fix new line maching
26
-
27
- == 0.7.2 / 2014-04-08
28
- * tests cleanups
29
- * gem release date fixed
30
-
31
- == 0.7.1 / 2014-04-02
32
- * handling wrong color values
33
-
34
- == 0.7.0 / 2014-03-12
35
- * refactored to use regexp pattern matching
36
- * works with frozen strings
37
- * works with concatenated string
38
-
39
- == 0.6.0 / 2013-09-25
40
- * code cleanups
41
- * bold mode fixed
42
- * STDOUT.isatty condition removed
43
- * doc updated
44
- * jeweler tasks removed
45
- * Rakefile updated
46
-
47
- == 0.5.8 / 2009-12-02
48
- * code cleanups
49
- * removed 'ruby -w' warnings
50
-
51
- == 0.5.7 / 2009-11-24
52
- * moved to github/gemcutter
53
- * 1.9 compatible
54
-
55
- == 0.5.6 / 2007-08-27
56
- * rdocs Allison template
57
- * cleanups
58
-
59
- == 0.5.5 / 2007-08-11
60
- * added effects methods
61
- * README files
62
- * new rake file
63
-
64
- == 0.5.0 / 2007-04-22
65
- * initial rewritten version