colorize 0.8.1 → 1.1.0

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: b2258f1a1f28ceb6396b7e29aa308326e02bba9a9f36cd229e70c0e417aacd37
4
+ data.tar.gz: 65b1cbb6089464e698f2dc8591b7d80af1c4aab479cef11e2fcee3c46428dd20
5
5
  SHA512:
6
- metadata.gz: 2d49b0c6362a92b525c7d1fdb0209f6fbfdfc61f720190d75f5ceef96338faa98358ce70e94bfe0a7a86f33f6036ae19e6ca9ce29dbbcfd59b3e2a3ee52d8a72
7
- data.tar.gz: 674694aef0a11430782f9d888b0b39a3365a8730144d0be759151977fd3b30b2a6c2041d8699438d2fbbfe5db57733bc4a018f6a6344a1f3a4cd590d47bf274c
6
+ metadata.gz: 879d312bfb7dad3576bbf6e9791c2a6e168bfb8a29db81980238ce2aaaa5456ac1e535709a6c4f4f811aa5d2a22dce5e89cd0e5366f365102a0667e5c7263d4b
7
+ data.tar.gz: efc22eb11cc908ae015473ac51fc19680b8adcaf6904d6db7c74064e7e3b2a41cdeadca0a45eeb7950780f94db19e472f561cb3b60bd125fc9460ee4807d353a
data/CHANGELOG.md ADDED
@@ -0,0 +1,91 @@
1
+ # Changelog
2
+
3
+ ## 1.1.0 / 2023-06-22
4
+ - make readline support optional
5
+
6
+ ## 1.0.5 / 2023-06-22
7
+ - (backwards compatibility) purple -> magenta
8
+
9
+ ## 1.0.3 / 2023-06-21
10
+ - fix ? ommit
11
+
12
+ ## 1.0.2 / 2023-06-21
13
+ - check if color exists when extending class
14
+
15
+ ## 1.0.1 / 2023-06-19
16
+ - fix maching of colorized strings without readline characters
17
+
18
+ ## 1.0.0 / 2023-06-19
19
+ - add more modes
20
+ - add aliases
21
+ - grey and gray default aliases
22
+ - update dependencies
23
+ - add non-visible text delimiters
24
+ - add prevent_color switch
25
+ - cleanup and refactor
26
+
27
+ ## 0.8.1 / 2016-06-29
28
+ - fix gemspec bug
29
+
30
+ ## 0.8.0 / 2016-06-27
31
+ - add ColorizedString class
32
+ - update README file
33
+ - add rubocop.yml and follow style
34
+ - add italic mode
35
+ - remove interpreter warrnings
36
+
37
+ ## 0.7.7 / 2015-04-19
38
+ - update gems
39
+
40
+ ## 0.7.6 / 2015-04-18
41
+ - fix bugs
42
+
43
+ ## 0.7.5 / 2014-12-11
44
+ - big code refactoring
45
+ - disable_colorization feature added
46
+
47
+ ## 0.7.4 / 2014-12-10
48
+ - code cleanups
49
+
50
+ ## 0.7.3 / 2014-05-19
51
+ - fix new line maching
52
+
53
+ ## 0.7.2 / 2014-04-08
54
+ - tests cleanups
55
+ - gem release date fixed
56
+
57
+ ## 0.7.1 / 2014-04-02
58
+ - handling wrong color values
59
+
60
+ ## 0.7.0 / 2014-03-12
61
+ - refactored to use regexp pattern matching
62
+ - works with frozen strings
63
+ - works with concatenated string
64
+
65
+ ## 0.6.0 / 2013-09-25
66
+ - code cleanups
67
+ - bold mode fixed
68
+ - STDOUT.isatty condition removed
69
+ - doc updated
70
+ - jeweler tasks removed
71
+ - Rakefile updated
72
+
73
+ ## 0.5.8 / 2009-12-02
74
+ - code cleanups
75
+ - removed 'ruby -w' warnings
76
+
77
+ ## 0.5.7 / 2009-11-24
78
+ - moved to github/gemcutter
79
+ - 1.9 compatible
80
+
81
+ ## 0.5.6 / 2007-08-27
82
+ - rdocs Allison template
83
+ - cleanups
84
+
85
+ ## 0.5.5 / 2007-08-11
86
+ - added effects methods
87
+ - README files
88
+ - new rake file
89
+
90
+ ## 0.5.0 / 2007-04-22
91
+ - 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|
@@ -10,4 +12,8 @@ task :default do
10
12
  Rake::Task[:test].execute
11
13
  ENV['TEST'] = 'test/test_colorized_string.rb'
12
14
  Rake::Task[:test].execute
15
+ ENV['TEST'] = 'test/test_colorize_with_readline.rb'
16
+ Rake::Task[:test].execute
17
+ ENV['TEST'] = 'test/test_colorized_string_with_readline.rb'
18
+ Rake::Task[:test].execute
13
19
  end
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,78 @@
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
+ magenta: 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_magenta: 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 readline support
44
+ #
45
+ def enable_readline_support(value = nil)
46
+ if value.nil?
47
+ if defined?(@@readline_support)
48
+ @@readline_support || false
49
+ else
50
+ false
51
+ end
52
+ else
53
+ @@readline_support = (value || false)
54
+ end
55
+ end
56
+
57
+ #
58
+ # Setter for enable readline support
59
+ #
60
+ def enable_readline_support=(value)
61
+ @@readline_support = (value || false)
62
+ end
63
+
64
+ #
65
+ # Property for disable colorization
5
66
  #
6
67
  def disable_colorization(value = nil)
7
68
  if value.nil?
8
- if defined?(@disable_colorization)
9
- @disable_colorization || false
69
+ if defined?(@@disable_colorization)
70
+ @@disable_colorization || false
10
71
  else
11
72
  false
12
73
  end
13
74
  else
14
- @disable_colorization = (value || false)
75
+ @@disable_colorization = (value || false)
15
76
  end
16
77
  end
17
78
 
@@ -19,7 +80,29 @@ module Colorize
19
80
  # Setter for disable colorization
20
81
  #
21
82
  def disable_colorization=(value)
22
- @disable_colorization = (value || false)
83
+ @@disable_colorization = (value || false)
84
+ end
85
+
86
+ #
87
+ # Property for prevent recolorization
88
+ #
89
+ def prevent_colors(value = nil)
90
+ if value.nil?
91
+ if defined?(@@prevent_colors)
92
+ @@prevent_colors || false
93
+ else
94
+ false
95
+ end
96
+ else
97
+ @@prevent_colors = (value || false)
98
+ end
99
+ end
100
+
101
+ #
102
+ # Setter for prevent recolorization
103
+ #
104
+ def prevent_colors=(value)
105
+ @@prevent_colors = (value || false)
23
106
  end
24
107
 
25
108
  #
@@ -47,10 +130,16 @@ module Colorize
47
130
  end
48
131
 
49
132
  #
50
- # Method removed, raise NoMethodError
133
+ # Add color alias
51
134
  #
52
- def color_matrix(_ = '')
53
- fail NoMethodError, '#color_matrix method was removed, try #color_samples instead'
135
+ def add_color_alias(*params)
136
+ parse_color_alias_params(params).each do |_alias_, _color_|
137
+ check_if_color_available!(_alias_)
138
+ check_if_color_exist!(_color_)
139
+
140
+ add_color_code(_alias_, color_codes[_color_])
141
+ add_color_method(_alias_)
142
+ end
54
143
  end
55
144
 
56
145
  # private
@@ -59,32 +148,18 @@ module Colorize
59
148
  # Color codes hash
60
149
  #
61
150
  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
- }
151
+ @@color_codes
152
+ end
153
+
154
+ def add_color_code(code, color)
155
+ @@color_codes[code] = color
73
156
  end
74
157
 
75
158
  #
76
159
  # Mode codes hash
77
160
  #
78
161
  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
- }
162
+ @@mode_codes
88
163
  end
89
164
 
90
165
  #
@@ -94,13 +169,20 @@ module Colorize
94
169
  colors.each do |key|
95
170
  next if key == :default
96
171
 
97
- define_method key do
98
- colorize(:color => key)
99
- end
172
+ add_color_method(key)
173
+ end
174
+ end
100
175
 
101
- define_method "on_#{key}" do
102
- colorize(:background => key)
103
- end
176
+ #
177
+ # Generate color and on_color method
178
+ #
179
+ def add_color_method(key)
180
+ define_method key do
181
+ colorize(:color => key)
182
+ end
183
+
184
+ define_method "on_#{key}" do
185
+ colorize(:background => key)
104
186
  end
105
187
  end
106
188
 
@@ -116,5 +198,32 @@ module Colorize
116
198
  end
117
199
  end
118
200
  end
201
+
202
+ def parse_color_alias_params(params)
203
+ return [params] if params.is_a?(Array) && params.length == 2
204
+
205
+ params.flat_map do |param|
206
+ next param if param.is_a?(Array) && param.length == 2
207
+ next param.to_a if param.is_a?(Hash)
208
+ end
209
+ end
210
+
211
+ #
212
+ # Check if color exists
213
+ #
214
+ def check_if_color_available!(color)
215
+ color_exist?(color) && fail(::Colorize::ColorAlreadyExist, "Colorize: color named :#{color} already exist!")
216
+ end
217
+
218
+ #
219
+ # Check if color is missing
220
+ #
221
+ def check_if_color_exist!(color)
222
+ color_exist?(color) || fail(::Colorize::ColorDontExist, "Colorize: color :#{color} don't exist!")
223
+ end
224
+
225
+ def color_exist?(color)
226
+ !color_codes[color].nil?
227
+ end
119
228
  end
120
229
  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 << colorized_string(match[0], match[1], match[2], match[3])
26
28
  end
27
29
  end
28
30
 
@@ -46,6 +48,17 @@ module Colorize
46
48
 
47
49
  private
48
50
 
51
+ #
52
+ # Generate string with escape colors
53
+ #
54
+ def colorized_string(mode, color, background_color, previous)
55
+ if self.class.enable_readline_support
56
+ "\001\033[#{mode};#{color};#{background_color}m\002#{previous}\001\033[0m\002"
57
+ else
58
+ "\033[#{mode};#{color};#{background_color}m#{previous}\033[0m"
59
+ end
60
+ end
61
+
49
62
  #
50
63
  # Set default colors
51
64
  #
@@ -69,30 +82,40 @@ module Colorize
69
82
  # Set colors from params hash
70
83
  #
71
84
  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])
85
+ if self.class.prevent_colors
86
+ match[0] ||= mode(hash[:mode]) if mode(hash[:mode])
87
+ match[1] ||= color(hash[:color]) if color(hash[:color])
88
+ match[2] ||= background_color(hash[:background]) if background_color(hash[:background])
89
+ else
90
+ match[0] = mode(hash[:mode]) if mode(hash[:mode])
91
+ match[1] = color(hash[:color]) if color(hash[:color])
92
+ match[2] = background_color(hash[:background]) if background_color(hash[:background])
93
+ end
75
94
  end
76
95
 
77
96
  #
78
97
  # Set color from params symbol
79
98
  #
80
99
  def color_from_symbol(match, symbol)
81
- match[1] = color(symbol) if color(symbol)
100
+ if self.class.prevent_colors && color(symbol)
101
+ match[1] ||= color(symbol)
102
+ else
103
+ match[1] = color(symbol)
104
+ end
82
105
  end
83
106
 
84
107
  #
85
- # Color for foreground (offset 30)
108
+ # Color for foreground
86
109
  #
87
110
  def color(color)
88
- self.class.color_codes[color] + 30 if self.class.color_codes[color]
111
+ self.class.color_codes[color]
89
112
  end
90
113
 
91
114
  #
92
- # Color for background (offset 40)
115
+ # Color for background (offset 10)
93
116
  #
94
117
  def background_color(color)
95
- self.class.color_codes[color] + 40 if self.class.color_codes[color]
118
+ self.class.color_codes[color] + 10 if self.class.color_codes[color]
96
119
  end
97
120
 
98
121
  #
@@ -102,11 +125,22 @@ module Colorize
102
125
  self.class.mode_codes[mode]
103
126
  end
104
127
 
128
+ #
129
+ # Generate regex for color scanner
130
+ #
131
+ def scan_for_colors_regex
132
+ if self.class.enable_readline_support
133
+ /\001?\033\[([0-9;]+)m\002?(.+?)\001?\033\[0m\002?|([^\001\033]+)/m
134
+ else
135
+ /\033\[([0-9;]+)m(.+?)\033\[0m|([^\033]+)/m
136
+ end
137
+ end
138
+
105
139
  #
106
140
  # Scan for colorized string
107
141
  #
108
142
  def scan_for_colors
109
- scan(/\033\[([0-9;]+)m(.+?)\033\[0m|([^\033]+)/m).map do |match|
143
+ scan(scan_for_colors_regex).map do |match|
110
144
  split_colors(match)
111
145
  end
112
146
  end
@@ -124,7 +158,7 @@ module Colorize
124
158
  # Require windows libs
125
159
  #
126
160
  def require_windows_libs
127
- require 'Win32/Console/ANSI' if RUBY_VERSION < '2.0.0' && RUBY_PLATFORM =~ /win32/
161
+ require 'Win32/Console/ANSI' if RUBY_VERSION < '2.0.0' && RUBY_PLATFORM.include?('win32')
128
162
  rescue LoadError
129
163
  raise 'You must gem install win32console to use colorize on Windows'
130
164
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Gem version
5
+ #
6
+ module Colorize
7
+ VERSION = '1.1.0'
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