sai 0.1.0 → 0.2.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.
@@ -0,0 +1,298 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sai/terminal/capabilities'
4
+ require 'sai/terminal/color_mode'
5
+
6
+ module Sai
7
+ # Color mode selection methods
8
+ #
9
+ # @author {https://aaronmallen.me Aaron Allen}
10
+ # @since 0.2.0
11
+ #
12
+ # @api public
13
+ module ModeSelector
14
+ class << self
15
+ # Set the color mode to 256 color (8-bit) mode
16
+ #
17
+ # @author {https://aaronmallen.me Aaron Allen}
18
+ # @since 0.2.0
19
+ #
20
+ # @api private
21
+ #
22
+ # @example
23
+ # Sai.mode.advanced #=> 3
24
+ # Sai.mode.eight_bit #=> 3
25
+ # Sai.mode.color256 #=> 3
26
+ #
27
+ # @return [Integer] the color mode
28
+ # @rbs () -> Integer
29
+ def advanced
30
+ Terminal::ColorMode::ADVANCED
31
+ end
32
+ alias color256 advanced
33
+ alias colour256 advanced
34
+ alias eight_bit advanced
35
+ alias two_hundred_fifty_six_color advanced
36
+ alias two_hundred_fifty_six_colour advanced
37
+
38
+ # Automatically set the color mode to advanced (8-bit) or lower
39
+ #
40
+ # Sets the terminal color mode to advanced (8-bit) support, which provides 256 colors
41
+ # The mode will automatically downgrade to 4-bit, 3-bit, or NO_COLOR if the terminal doesn't support
42
+ # advanced colors
43
+ #
44
+ # @author {https://aaronmallen.me Aaron Allen}
45
+ # @since 0.2.0
46
+ #
47
+ # @api public
48
+ #
49
+ # @example With color support enabled
50
+ # ENV['COLORTERM'] #=> nil
51
+ # ENV['TERM'] #=> 'xterm-256color'
52
+ # Sai.mode.ansi_auto #=> 3
53
+ # Sai.mode.four_bit_auto #=> 3
54
+ # Sai.mode.color_16_auto #=> 3
55
+ #
56
+ # @example With only 4-bit color support
57
+ # ENV['NO_COLOR'] #=> nil
58
+ # ENV['TERM'] #=> 'ansi'
59
+ # Sai.mode.ansi_auto #=> 2
60
+ # Sai.mode.four_bit_auto #=> 2
61
+ # Sai.mode.color_16_auto #=> 2
62
+ #
63
+ # @example With only 3-bit color support
64
+ # ENV['TERM'] #=> nil
65
+ # ENV['NO_COLOR'] #=> nil
66
+ # Sai.mode.ansi_auto #=> 1
67
+ # Sai.mode.four_bit_auto #=> 1
68
+ # Sai.mode.color16_auto #=> 1
69
+ #
70
+ # @example With color support disabled
71
+ # ENV['NO_COLOR'] #=> 'true'
72
+ # Sai.mode.ansi_auto #=> 0
73
+ # Sai.mode.four_bit_auto #=> 0
74
+ # Sai.mode.color16_auto #=> 0
75
+ #
76
+ # @return [Integer] the color mode
77
+ # @rbs () -> Integer
78
+ def advanced_auto
79
+ [Terminal::Capabilities.detect_color_support, Terminal::ColorMode::ADVANCED].min
80
+ end
81
+ alias color256_auto advanced_auto
82
+ alias colour256_auto advanced_auto
83
+ alias eight_bit_auto advanced_auto
84
+ alias two_hundred_fifty_six_color_auto advanced_auto
85
+ alias two_hundred_fifty_six_colour_auto advanced_auto
86
+
87
+ # Set the color mode to 16 color (4-bit) mode
88
+ #
89
+ # @author {https://aaronmallen.me Aaron Allen}
90
+ # @since 0.2.0
91
+ #
92
+ # @api public
93
+ #
94
+ # @example
95
+ # Sai.mode.ansi #=> 2
96
+ # Sai.mode.color16 #=> 2
97
+ # Sai.mode.four_bit #=> 2
98
+ #
99
+ # @return [Integer] the color mode
100
+ # @rbs () -> Integer
101
+ def ansi
102
+ Terminal::ColorMode::ANSI
103
+ end
104
+ alias color16 ansi
105
+ alias colour16 ansi
106
+ alias four_bit ansi
107
+ alias sixteen_color ansi
108
+ alias sixteen_colour ansi
109
+
110
+ # Automatically set the color mode to ansi (4-bit) or lower
111
+ #
112
+ # Sets the terminal color mode to ansi (4-bit) support, which provides 8 colors
113
+ # The mode will automatically downgrade to 3-bit or NO_COLOR if the terminal doesn't support
114
+ # ansi colors
115
+ #
116
+ # @author {https://aaronmallen.me Aaron Allen}
117
+ # @since 0.2.0
118
+ #
119
+ # @api public
120
+ #
121
+ # @example With color support enabled
122
+ # ENV['NO_COLOR'] #=> nil
123
+ # ENV['TERM'] #=> 'ansi'
124
+ # Sai.mode.ansi_auto #=> 2
125
+ # Sai.mode.four_bit_auto #=> 2
126
+ # Sai.mode.color_16_auto #=> 2
127
+ #
128
+ # @example With only 3-bit color support
129
+ # ENV['TERM'] #=> nil
130
+ # ENV['NO_COLOR'] #=> nil
131
+ # Sai.mode.ansi_auto #=> 1
132
+ # Sai.mode.four_bit_auto #=> 1
133
+ # Sai.mode.color16_auto #=> 1
134
+ #
135
+ # @example With color support disabled
136
+ # ENV['NO_COLOR'] #=> 'true'
137
+ # Sai.mode.ansi_auto #=> 0
138
+ # Sai.mode.four_bit_auto #=> 0
139
+ # Sai.mode.color16_auto #=> 0
140
+ #
141
+ # @return [Integer] the color mode
142
+ # @rbs () -> Integer
143
+ def ansi_auto
144
+ [Terminal::Capabilities.detect_color_support, Terminal::ColorMode::ANSI].min
145
+ end
146
+ alias color16_auto ansi_auto
147
+ alias colour16_auto ansi_auto
148
+ alias four_bit_auto ansi_auto
149
+ alias sixteen_color_auto ansi_auto
150
+ alias sixteen_colour_auto ansi_auto
151
+
152
+ # Set the color mode based on the current Terminal's capabilities
153
+ #
154
+ # This is the default color mode for {Sai}
155
+ #
156
+ # @author {https://aaronmallen.me Aaron Allen}
157
+ # @since 0.2.0
158
+ #
159
+ # @api public
160
+ #
161
+ # @example With 24-bit color support enabled
162
+ # ENV['COLORTERM'] #=> 'truecolor'
163
+ # Sai.node.auto #=> 4
164
+ #
165
+ # @example With only 8-bit color support enabled
166
+ # ENV['COLORTERM'] #=> nil
167
+ # ENV['TERM'] #=> 'xterm-256color'
168
+ # Sai.mode.auto #=> 3
169
+ #
170
+ # @example With only 4-bit color support
171
+ # ENV['NO_COLOR'] #=> nil
172
+ # ENV['TERM'] #=> 'ansi'
173
+ # Sai.mode.auto #=> 2
174
+ #
175
+ # @example With only 3-bit color support
176
+ # ENV['TERM'] #=> nil
177
+ # ENV['NO_COLOR'] #=> nil
178
+ # Sai.mode.auto #=> 1
179
+ #
180
+ # @example With color support disabled
181
+ # ENV['NO_COLOR'] #=> 'true'
182
+ # Sai.mode.auto #=> 0
183
+ #
184
+ # @return [Integer] the color mode
185
+ # @rbs () -> Integer
186
+ def auto
187
+ Terminal::Capabilities.detect_color_support
188
+ end
189
+ alias color16m_auto auto
190
+ alias colour16m_auto auto
191
+ alias enabled auto
192
+ alias sixteen_million_color_auto auto
193
+ alias sixteen_million_colour_auto auto
194
+ alias twenty_for_bit_auto auto
195
+
196
+ # Set the color mode to 8 color (3-bit) mode
197
+ #
198
+ # @author {https://aaronmallen.me Aaron Allen}
199
+ # @since 0.2.0
200
+ #
201
+ # @api public
202
+ #
203
+ # @example
204
+ # Sai.mode.basic #=> 1
205
+ # Sai.mode.color8 #=> 1
206
+ # Sai.mode.three_bit #=> 1
207
+ #
208
+ # @return [Integer] the 4 color (3-bit) mode
209
+ # @rbs () -> Integer
210
+ def basic
211
+ Terminal::ColorMode::BASIC
212
+ end
213
+ alias color8 basic
214
+ alias colour8 basic
215
+ alias eight_color basic
216
+ alias eight_colour basic
217
+ alias three_bit basic
218
+
219
+ # Automatically set the color mode to basic (3-bit) or lower
220
+ #
221
+ # Sets the terminal color mode to basic (3-bit) support, which provides 8 colors
222
+ # The mode will automatically downgrade to NO_COLOR if the terminal doesn't support
223
+ # basic colors
224
+ #
225
+ # @author {https://aaronmallen.me Aaron Allen}
226
+ # @since 0.2.0
227
+ #
228
+ # @api public
229
+ #
230
+ # @example With color support enabled
231
+ # ENV['NO_COLOR'] #=> nil
232
+ # Sai.mode.basic_auto #=> 1
233
+ # Sai.mode.three_bit_auto #=> 1
234
+ # Sai.mode.color8_auto #=> 1
235
+ #
236
+ # @example With color support disabled
237
+ # ENV['NO_COLOR'] #=> 'true'
238
+ # Sai.mode.basic_auto #=> 0
239
+ # Sai.mode.three_bit_auto #=> 0
240
+ # Sai.mode.color8_auto #=> 0
241
+ #
242
+ # @return [Integer] the color mode
243
+ # @rbs () -> Integer
244
+ def basic_auto
245
+ [Terminal::Capabilities.detect_color_support, Terminal::ColorMode::BASIC].min
246
+ end
247
+ alias color8_auto basic_auto
248
+ alias colour8_auto basic_auto
249
+ alias eight_color_auto basic_auto
250
+ alias eight_colour_auto basic_auto
251
+ alias three_bit_auto basic_auto
252
+
253
+ # Set the color mode to disable all color and styling
254
+ #
255
+ # @author {https://aaronmallen.me Aaron Allen}
256
+ # @since 0.2.0
257
+ #
258
+ # @api public
259
+ #
260
+ # @example
261
+ # Sai.mode.no_color #=> 0
262
+ # Sai.mode.disabled #=> 0
263
+ # Sai.mode.mono #=> 0
264
+ #
265
+ # @return [Integer] the color mode
266
+ # @rbs () -> Integer
267
+ def no_color
268
+ Terminal::ColorMode::NO_COLOR
269
+ end
270
+ alias disabled no_color
271
+ alias mono no_color
272
+ alias no_colour no_color
273
+
274
+ # Set the color mode to 16-million color (24-bit) mode
275
+ #
276
+ # @author {https://aaronmallen.me Aaron Allen}
277
+ # @since 0.2.0
278
+ #
279
+ # @api private
280
+ #
281
+ # @example
282
+ # Sai.mode.true_color #=> 4
283
+ # Sai.mode.twenty_four_bit #=> 4
284
+ # Sai.mode.color_16m #=> 4
285
+ #
286
+ # @return [Integer] the color mode
287
+ # @rbs () -> Integer
288
+ def true_color
289
+ Terminal::ColorMode::TRUE_COLOR
290
+ end
291
+ alias color16m true_color
292
+ alias colour16m true_color
293
+ alias sixteen_million_color true_color
294
+ alias sixteen_million_colour true_color
295
+ alias twenty_for_bit true_color
296
+ end
297
+ end
298
+ end
data/lib/sai/support.rb CHANGED
@@ -1,115 +1,116 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'sai/terminal/capabilities'
3
4
  require 'sai/terminal/color_mode'
4
5
 
5
6
  module Sai
6
7
  # Determine the color capabilities of the terminal
7
8
  #
8
9
  # @author {https://aaronmallen.me Aaron Allen}
9
- # @since unreleased
10
+ # @since 0.1.0
10
11
  #
11
12
  # @api public
12
- class Support
13
- # Initialize a new instance of Support
14
- #
15
- # @author {https://aaronmallen.me Aaron Allen}
16
- # @since unreleased
17
- #
18
- # @api private
19
- #
20
- # @param color_mode [Integer] the color mode
21
- #
22
- # @return [Support] the new instance of support
23
- # @rbs (Integer color_mode) -> void
24
- def initialize(color_mode)
25
- @color_mode = color_mode
26
- end
27
-
28
- # Check if the terminal supports ANSI colors (4-bit)
29
- #
30
- # @author {https://aaronmallen.me Aaron Allen}
31
- # @since unreleased
32
- #
33
- # @api public
34
- #
35
- # @example Check if the terminal supports ANSI colors
36
- # Sai.ansi? # => true
37
- #
38
- # @return [Boolean] `true` if the terminal supports ANSI colors (4-bit), otherwise `false`
39
- # @rbs () -> bool
40
- def ansi?
41
- @color_mode >= Terminal::ColorMode::ANSI
42
- end
43
- alias bit4? ansi?
44
- alias four_bit? ansi?
13
+ module Support
14
+ class << self
15
+ # Check if the terminal supports 256 colors (8-bit)
16
+ #
17
+ # @author {https://aaronmallen.me Aaron Allen}
18
+ # @since 0.1.0
19
+ #
20
+ # @api public
21
+ #
22
+ # @example Check if the terminal supports 256 colors
23
+ # Sai.advanced? # => true
24
+ #
25
+ # @return [Boolean] `true` if the terminal supports 256 colors (8-bit), otherwise `false`
26
+ # @rbs () -> bool
27
+ def advanced?
28
+ Terminal::Capabilities.detect_color_support >= Terminal::ColorMode::ADVANCED
29
+ end
30
+ alias color256? advanced?
31
+ alias colour256? advanced?
32
+ alias eight_bit? advanced?
33
+ alias two_hundred_fifty_six_color? advanced?
34
+ alias two_hundred_fifty_six_colour? advanced?
45
35
 
46
- # Check if the terminal supports basic colors (3-bit)
47
- #
48
- # @author {https://aaronmallen.me Aaron Allen}
49
- # @since unreleased
50
- #
51
- # @api public
52
- #
53
- # @example Check if the terminal supports basic colors
54
- # Sai.basic? # => true
55
- #
56
- # @return [Boolean] `true` if the terminal supports basic colors (3-bit), otherwise `false`
57
- # @rbs () -> bool
58
- def basic?
59
- @color_mode >= Terminal::ColorMode::BASIC
60
- end
61
- alias bit3? basic?
62
- alias three_bit? basic?
36
+ # Check if the terminal supports ANSI colors (4-bit)
37
+ #
38
+ # @author {https://aaronmallen.me Aaron Allen}
39
+ # @since 0.1.0
40
+ #
41
+ # @api public
42
+ #
43
+ # @example Check if the terminal supports ANSI colors
44
+ # Sai.ansi? # => true
45
+ #
46
+ # @return [Boolean] `true` if the terminal supports ANSI colors (4-bit), otherwise `false`
47
+ # @rbs () -> bool
48
+ def ansi?
49
+ Terminal::Capabilities.detect_color_support >= Terminal::ColorMode::ANSI
50
+ end
51
+ alias color16? ansi?
52
+ alias colour16? ansi?
53
+ alias four_bit? ansi?
54
+ alias sixteen_color? ansi?
55
+ alias sixteen_colour? ansi?
63
56
 
64
- # Check if the terminal supports 256 colors (8-bit)
65
- #
66
- # @author {https://aaronmallen.me Aaron Allen}
67
- # @since unreleased
68
- #
69
- # @api public
70
- #
71
- # @example Check if the terminal supports 256 colors
72
- # Sai.bit_8? # => true
73
- #
74
- # @return [Boolean] `true` if the terminal supports 256 colors (8-bit), otherwise `false`
75
- # @rbs () -> bool
76
- def bit8?
77
- @color_mode >= Terminal::ColorMode::BIT8
78
- end
79
- alias eight_bit? bit8?
57
+ # Check if the terminal supports basic colors (3-bit)
58
+ #
59
+ # @author {https://aaronmallen.me Aaron Allen}
60
+ # @since 0.1.0
61
+ #
62
+ # @api public
63
+ #
64
+ # @example Check if the terminal supports basic colors
65
+ # Sai.basic? # => true
66
+ #
67
+ # @return [Boolean] `true` if the terminal supports basic colors (3-bit), otherwise `false`
68
+ # @rbs () -> bool
69
+ def basic?
70
+ Terminal::Capabilities.detect_color_support >= Terminal::ColorMode::BASIC
71
+ end
72
+ alias color8? basic?
73
+ alias colour8? basic?
74
+ alias eight_color? basic?
75
+ alias eight_colour? basic?
76
+ alias three_bit? basic?
80
77
 
81
- # Check if the terminal supports color output
82
- #
83
- # @author {https://aaronmallen.me Aaron Allen}
84
- # @since unreleased
85
- #
86
- # @api public
87
- #
88
- # @example Check if the terminal supports color
89
- # Sai.color? # => true
90
- #
91
- # @return [Boolean] `true` if the terminal supports color output, otherwise `false`
92
- # @rbs () -> bool
93
- def color?
94
- @color_mode > Terminal::ColorMode::NO_COLOR
95
- end
78
+ # Check if the terminal supports color output
79
+ #
80
+ # @author {https://aaronmallen.me Aaron Allen}
81
+ # @since 0.1.0
82
+ #
83
+ # @api public
84
+ #
85
+ # @example Check if the terminal supports color
86
+ # Sai.color? # => true
87
+ #
88
+ # @return [Boolean] `true` if the terminal supports color output, otherwise `false`
89
+ # @rbs () -> bool
90
+ def color?
91
+ Terminal::Capabilities.detect_color_support > Terminal::ColorMode::NO_COLOR
92
+ end
96
93
 
97
- # Check if the terminal supports true color (24-bit)
98
- #
99
- # @author {https://aaronmallen.me Aaron Allen}
100
- # @since unreleased
101
- #
102
- # @api public
103
- #
104
- # @example Check if the terminal supports true color
105
- # Sai.true_color? # => true
106
- #
107
- # @return [Boolean] `true` if the terminal supports true color (24-bit), otherwise `false`
108
- # @rbs () -> bool
109
- def true_color?
110
- @color_mode >= Terminal::ColorMode::TRUE_COLOR
94
+ # Check if the terminal supports true color (24-bit)
95
+ #
96
+ # @author {https://aaronmallen.me Aaron Allen}
97
+ # @since 0.1.0
98
+ #
99
+ # @api public
100
+ #
101
+ # @example Check if the terminal supports true color
102
+ # Sai.true_color? # => true
103
+ #
104
+ # @return [Boolean] `true` if the terminal supports true color (24-bit), otherwise `false`
105
+ # @rbs () -> bool
106
+ def true_color?
107
+ Terminal::Capabilities.detect_color_support >= Terminal::ColorMode::TRUE_COLOR
108
+ end
109
+ alias color16m? true_color?
110
+ alias colour16m? true_color?
111
+ alias sixteen_million_color? true_color?
112
+ alias sixteen_million_colour? true_color?
113
+ alias twenty_for_bit? true_color?
111
114
  end
112
- alias bit24? true_color?
113
- alias twenty_four_bit? true_color?
114
115
  end
115
116
  end
@@ -7,7 +7,7 @@ module Sai
7
7
  # Detect the color capabilities of the terminal
8
8
  #
9
9
  # @author {https://aaronmallen.me Aaron Allen}
10
- # @since unreleased
10
+ # @since 0.1.0
11
11
  #
12
12
  # @api private
13
13
  module Capabilities
@@ -15,7 +15,7 @@ module Sai
15
15
  # Detect the color capabilities of the current terminal
16
16
  #
17
17
  # @author {https://aaronmallen.me Aaron Allen}
18
- # @since unreleased
18
+ # @since 0.1.0
19
19
  #
20
20
  # @api private
21
21
  #
@@ -24,7 +24,7 @@ module Sai
24
24
  def detect_color_support
25
25
  return ColorMode::NO_COLOR if no_color?
26
26
  return ColorMode::TRUE_COLOR if true_color?
27
- return ColorMode::BIT8 if bit8?
27
+ return ColorMode::ADVANCED if advanced?
28
28
  return ColorMode::ANSI if ansi?
29
29
  return ColorMode::BASIC if basic?
30
30
 
@@ -33,10 +33,25 @@ module Sai
33
33
 
34
34
  private
35
35
 
36
+ # Check for 256 color (8-bit) support
37
+ #
38
+ # @author {https://aaronmallen.me Aaron Allen}
39
+ # @since 0.1.0
40
+ #
41
+ # @api private
42
+ #
43
+ # @return [Boolean] `true` if the terminal supports 256 colors, otherwise `false`
44
+ # @rbs () -> bool
45
+ def advanced?
46
+ return true if ENV.fetch('TERM', '').end_with?('-256color')
47
+
48
+ ENV.fetch('COLORTERM', '0').to_i >= 256
49
+ end
50
+
36
51
  # Check for ANSI color support
37
52
  #
38
53
  # @author {https://aaronmallen.me Aaron Allen}
39
- # @since unreleased
54
+ # @since 0.1.0
40
55
  #
41
56
  # @api private
42
57
  #
@@ -51,7 +66,7 @@ module Sai
51
66
  # Check for basic color support
52
67
  #
53
68
  # @author {https://aaronmallen.me Aaron Allen}
54
- # @since unreleased
69
+ # @since 0.1.0
55
70
  #
56
71
  # @api private
57
72
  #
@@ -61,25 +76,10 @@ module Sai
61
76
  !ENV.fetch('TERM', '').empty?
62
77
  end
63
78
 
64
- # Check for 256 color (8-bit) support
65
- #
66
- # @author {https://aaronmallen.me Aaron Allen}
67
- # @since unreleased
68
- #
69
- # @api private
70
- #
71
- # @return [Boolean] `true` if the terminal supports 256 colors, otherwise `false`
72
- # @rbs () -> bool
73
- def bit8?
74
- return true if ENV.fetch('TERM', '').end_with?('-256color')
75
-
76
- ENV.fetch('COLORTERM', '0').to_i >= 256
77
- end
78
-
79
79
  # Check for NO_COLOR environment variable
80
80
  #
81
81
  # @author {https://aaronmallen.me Aaron Allen}
82
- # @since unreleased
82
+ # @since 0.1.0
83
83
  #
84
84
  # @api private
85
85
  #
@@ -94,7 +94,7 @@ module Sai
94
94
  # Check for true color (24-bit) support
95
95
  #
96
96
  # @author {https://aaronmallen.me Aaron Allen}
97
- # @since unreleased
97
+ # @since 0.1.0
98
98
  #
99
99
  # @api private
100
100
  #
@@ -5,14 +5,14 @@ module Sai
5
5
  # Represents different color support levels for terminal interfaces
6
6
  #
7
7
  # @author {https://aaronmallen.me Aaron Allen}
8
- # @since unreleased
8
+ # @since 0.1.0
9
9
  #
10
10
  # @api private
11
11
  module ColorMode
12
12
  # The terminal does not support color output
13
13
  #
14
14
  # @author {https://aaronmallen.me Aaron Allen}
15
- # @since unreleased
15
+ # @since 0.1.0
16
16
  #
17
17
  # @api private
18
18
  #
@@ -22,7 +22,7 @@ module Sai
22
22
  # The terminal supports 8 colors (3-bit)
23
23
  #
24
24
  # @author {https://aaronmallen.me Aaron Allen}
25
- # @since unreleased
25
+ # @since 0.1.0
26
26
  #
27
27
  # @api private
28
28
  #
@@ -32,7 +32,7 @@ module Sai
32
32
  # The terminal supports 16 colors (4-bit)
33
33
  #
34
34
  # @author {https://aaronmallen.me Aaron Allen}
35
- # @since unreleased
35
+ # @since 0.1.0
36
36
  #
37
37
  # @api private
38
38
  #
@@ -42,17 +42,17 @@ module Sai
42
42
  # The terminal supports 256 colors (8-bit)
43
43
  #
44
44
  # @author {https://aaronmallen.me Aaron Allen}
45
- # @since unreleased
45
+ # @since 0.1.0
46
46
  #
47
47
  # @api private
48
48
  #
49
49
  # @return [Integer] the color mode
50
- BIT8 = 3 #: Integer
50
+ ADVANCED = 3 #: Integer
51
51
 
52
52
  # The terminal supports 16 million colors (24-bit)
53
53
  #
54
54
  # @author {https://aaronmallen.me Aaron Allen}
55
- # @since unreleased
55
+ # @since 0.1.0
56
56
  #
57
57
  # @api private
58
58
  #