l43_simple_color 0.2.1 → 0.2.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
2
  SHA256:
3
- metadata.gz: 10eeebfdefb2b76a9368c0e9dff8af58c2a4e2898b53212b0fb1df37541be809
4
- data.tar.gz: b98c3bf606f3421855b385dba90dd3ed41aac941c65656053e4c627d18e263bc
3
+ metadata.gz: '028690d7102e44ca4e2515c7dcfdadd94b3d68aac0e7891efc581960a8780d2b'
4
+ data.tar.gz: 2dec499969bacdc53320f9420120b6132fc9973aa7faa4e0014cd07b602c6a21
5
5
  SHA512:
6
- metadata.gz: bc0f9f77944abe101cad1851f5c81a4b14ed7aa02719b494ad374714e47cdce11060467a15fe57e9bd63158ac3907697a1c524247db7b9eba59dec349bc2777b
7
- data.tar.gz: dda276f2001d5e90932606dda820d8df70f59be2263b6d73139c6acbf08fa612f9b5dbd0b5aedfae50824d1d571b1c113be5b356c0a2a534120fe3e323ce3754
6
+ metadata.gz: eead46917e66f7039a951320c0bf3158976ed90f2ec10f5322f5669d4e2367d593c51a88e5977ec75cdef9ce42ef68dab2af4655bac3ee5d1505b2dbec95cdfb
7
+ data.tar.gz: 9165477f5e3d4cfb23cb6824a60d90b31a34db8fd418ddebecaf08829f7984cef525aafa63b3370723b081b21464c02cd2f8d6e9468492c66a84600bbec66ff5
@@ -1,262 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'l43/simple_color/color_definitions'
3
4
  module L43
4
5
  module SimpleColor
5
6
  BadColor = Class.new(RuntimeError)
6
7
 
7
8
  module ColorData
8
- ANSI_CODE_SPLITTING_STRING = "__"
9
-
10
- CSI = "\e["
11
-
12
- Bold = "\x1b[1m"
13
- Dim = "\x1b[2m"
14
- Reset = "\x1b[0m"
15
- Underline = "\x1b[4m"
16
-
17
- Colors = {
18
- black: "\x1b[30m",
19
- blue: "\x1b[34m",
20
- cyan: "\x1b[36m",
21
- green: "\x1b[32m",
22
- magenta: "\x1b[35m",
23
- red: "\x1b[31m",
24
- white: "\x1b[37m",
25
- yellow: "\x1b[33m",
26
-
27
- bgblack: "\x1b[40m",
28
- bgblue: "\x1b[44m",
29
- bgcyan: "\x1b[46m",
30
- bggreen: "\x1b[42m",
31
- bgmagenta: "\x1b[45m",
32
- bgred: "\x1b[41m",
33
- bgwhite: "\x1b[47m",
34
- bgyellow: "\x1b[43m",
35
-
36
- b: Bold,
37
- bold: Bold,
38
- d: Dim,
39
- dim: Dim,
40
- r: Reset,
41
- reset: Reset,
42
- ul: Underline,
43
- underline: Underline,
44
- }
45
9
 
46
- RGB_COLORS = {
47
- aqua: [0, 255, 255],
48
- aquamarine1: [95, 255, 215],
49
- aquamarine3: [95, 215, 175],
50
- azure1: [240, 255, 255],
51
- blue1: [0, 0, 255],
52
- blue3: [0, 0, 175],
53
- blue_violet: [95, 0, 255],
54
- cadet_blue: [95, 175, 135],
55
- chartreuse1: [135, 255, 0],
56
- chartreuse2: [95, 255, 0],
57
- chartreuse3: [95, 175, 0],
58
- chartreuse4: [95, 135, 0],
59
- cornflower_blue: [95, 135, 255],
60
- cornsilk1: [255, 255, 215],
61
- cyan1: [0, 255, 255],
62
- cyan2: [0, 255, 215],
63
- cyan3: [0, 215, 175],
64
- dark_blue: [0, 0, 135],
65
- dark_cyan: [0, 175, 135],
66
- dark_goldenrod: [175, 135, 0],
67
- dark_green: [0, 95, 0],
68
- dark_khaki: [175, 175, 95],
69
- dark_magenta: [135, 0, 135],
70
- dark_olive_green1: [215, 255, 95],
71
- dark_olive_green2: [175, 255, 95],
72
- dark_olive_green3: [135, 175, 95],
73
- dark_orange3: [175, 95, 0],
74
- dark_orange: [255, 135, 0],
75
- dark_red: [95, 0, 0],
76
- dark_sea_green1: [175, 255, 215],
77
- dark_sea_green2: [175, 215, 175],
78
- dark_sea_green3: [135, 215, 175],
79
- dark_sea_green4: [95, 135, 95],
80
- dark_sea_green: [135, 175, 135],
81
- dark_slate_gray1: [135, 255, 255],
82
- dark_slate_gray2: [95, 255, 255],
83
- dark_slate_gray3: [135, 215, 215],
84
- dark_turquoise: [0, 215, 215],
85
- dark_violet: [135, 0, 215],
86
- deep_pink1: [255, 0, 135],
87
- deep_pink2: [255, 0, 95],
88
- deep_pink3: [215, 0, 95],
89
- deep_pink4: [95, 0, 95],
90
- deep_sky_blue1: [0, 175, 255],
91
- deep_sky_blue2: [0, 175, 215],
92
- deep_sky_blue3: [0, 135, 175],
93
- deep_sky_blue4: [0, 95, 95],
94
- dodger_blue1: [0, 135, 255],
95
- dodger_blue2: [0, 95, 255],
96
- dodger_blue3: [0, 95, 215],
97
- fuchsia: [255, 0, 255],
98
- gold1: [255, 215, 0],
99
- gold3: [175, 175, 0],
100
- green1: [0, 255, 0],
101
- green3: [0, 175, 0],
102
- green4: [0, 135, 0],
103
- green_yellow: [175, 255, 0],
104
- grey0: [0, 0, 0],
105
- grey100: [255, 255, 255],
106
- grey11: [28, 28, 28],
107
- grey15: [38, 38, 38],
108
- grey19: [48, 48, 48],
109
- grey23: [58, 58, 58],
110
- grey27: [68, 68, 68],
111
- grey30: [78, 78, 78],
112
- grey35: [88, 88, 88],
113
- grey37: [95, 95, 95],
114
- grey39: [98, 98, 98],
115
- grey3: [8, 8, 8],
116
- grey42: [108, 108, 108],
117
- grey46: [118, 118, 118],
118
- grey50: [128, 128, 128],
119
- grey53: [135, 135, 135],
120
- grey54: [138, 138, 138],
121
- grey58: [148, 148, 148],
122
- grey62: [158, 158, 158],
123
- grey63: [175, 135, 175],
124
- grey66: [168, 168, 168],
125
- grey69: [175, 175, 175],
126
- grey70: [178, 178, 178],
127
- grey74: [188, 188, 188],
128
- grey78: [198, 198, 198],
129
- grey7: [18, 18, 18],
130
- grey82: [208, 208, 208],
131
- grey84: [215, 215, 215],
132
- grey85: [218, 218, 218],
133
- grey89: [228, 228, 228],
134
- grey93: [238, 238, 238],
135
- grey: [128, 128, 128],
136
- honeydew2: [215, 255, 215],
137
- hot_pink2: [215, 95, 175],
138
- hot_pink3: [175, 95, 135],
139
- hot_pink: [255, 95, 175],
140
- indian_red1: [255, 95, 95],
141
- indian_red: [175, 95, 95],
142
- khaki1: [255, 255, 135],
143
- khaki3: [215, 215, 95],
144
- light_coral: [255, 135, 135],
145
- light_cyan1: [215, 255, 255],
146
- light_cyan3: [175, 215, 215],
147
- light_goldenrod1: [255, 255, 95],
148
- light_goldenrod2: [215, 215, 135],
149
- light_goldenrod3: [215, 175, 95],
150
- light_green: [135, 255, 95],
151
- light_pink1: [255, 175, 175],
152
- light_pink3: [215, 135, 135],
153
- light_pink4: [135, 95, 95],
154
- light_salmon1: [255, 175, 135],
155
- light_salmon3: [175, 135, 95],
156
- light_sea_green: [0, 175, 175],
157
- light_sky_blue1: [175, 215, 255],
158
- light_sky_blue3: [135, 175, 175],
159
- light_slate_blue: [135, 135, 255],
160
- light_slate_grey: [135, 135, 175],
161
- light_steel_blue1: [215, 215, 255],
162
- light_steel_blue3: [175, 175, 215],
163
- light_steel_blue: [175, 175, 255],
164
- light_yellow3: [215, 215, 175],
165
- lime: [0, 255, 0],
166
- magenta1: [255, 0, 255],
167
- magenta2: [215, 0, 255],
168
- magenta3: [175, 0, 175],
169
- maroon: [128, 0, 0],
170
- medium_orchid1: [215, 95, 255],
171
- medium_orchid3: [175, 95, 175],
172
- medium_orchid: [175, 95, 215],
173
- medium_purple1: [175, 135, 255],
174
- medium_purple2: [175, 95, 255],
175
- medium_purple3: [135, 95, 175],
176
- medium_purple4: [95, 95, 135],
177
- medium_purple: [135, 135, 215],
178
- medium_spring_green: [0, 255, 175],
179
- medium_turquoise: [95, 215, 215],
180
- medium_violet_red: [175, 0, 135],
181
- misty_rose1: [255, 215, 215],
182
- misty_rose3: [215, 175, 175],
183
- navajo_white1: [255, 215, 175],
184
- navajo_white3: [175, 175, 135],
185
- navy: [0, 0, 128],
186
- navy_blue: [0, 0, 95],
187
- olive: [128, 128, 0],
188
- orange: [255, 128, 0],
189
- orange1: [255, 175, 0],
190
- orange3: [215, 135, 0],
191
- orange4: [95, 95, 0],
192
- orange_red1: [255, 95, 0],
193
- orchid1: [255, 135, 255],
194
- orchid2: [255, 135, 215],
195
- orchid: [215, 95, 215],
196
- pale_green1: [135, 255, 175],
197
- pale_green3: [95, 215, 95],
198
- pale_turquoise1: [175, 255, 255],
199
- pale_turquoise4: [95, 135, 135],
200
- pale_violet_red1: [255, 135, 175],
201
- pink1: [255, 175, 215],
202
- pink3: [215, 135, 175],
203
- plum1: [255, 175, 255],
204
- plum2: [215, 175, 255],
205
- plum3: [215, 135, 215],
206
- plum4: [135, 95, 135],
207
- purple3: [95, 0, 215],
208
- purple4: [95, 0, 135],
209
- purple: [128, 0, 128],
210
- red1: [255, 0, 0],
211
- red3: [175, 0, 0],
212
- rosy_brown: [175, 135, 135],
213
- royal_blue1: [95, 95, 255],
214
- salmon1: [255, 135, 95],
215
- sandy_brown: [255, 175, 95],
216
- sea_green1: [95, 255, 135],
217
- sea_green2: [95, 255, 95],
218
- sea_green3: [95, 215, 135],
219
- silver: [192, 192, 192],
220
- sky_blue1: [135, 215, 255],
221
- sky_blue2: [135, 175, 255],
222
- sky_blue3: [95, 175, 215],
223
- slate_blue1: [135, 95, 255],
224
- slate_blue3: [95, 95, 175],
225
- spring_green1: [0, 255, 135],
226
- spring_green2: [0, 215, 135],
227
- spring_green3: [0, 175, 95],
228
- spring_green4: [0, 135, 95],
229
- steel_blue1: [95, 175, 255],
230
- steel_blue3: [95, 135, 215],
231
- steel_blue: [95, 135, 175],
232
- tan: [215, 175, 135],
233
- teal: [0, 128, 128],
234
- thistle1: [255, 215, 255],
235
- thistle3: [215, 175, 215],
236
- turquoise2: [0, 215, 255],
237
- turquoise4: [0, 135, 135],
238
- violet: [215, 135, 255],
239
- wheat1: [255, 255, 175],
240
- wheat4: [135, 135, 95],
241
- yellow1: [255, 255, 0],
242
- yellow2: [215, 255, 0],
243
- yellow3: [175, 215, 0],
244
- yellow4: [135, 135, 0]
245
- }.map do |k, rgb|
246
- [k, [CSI, "38;2;", *rgb.join(";"), "m"].join]
247
- end.to_h
248
-
249
- ExtendedColors =
250
- (0..255)
251
- .map {["color#{it}".to_sym, [CSI, "38;5;", it, "m"].join ]}
252
- .to_h
253
- .merge(RGB_COLORS)
254
- .freeze
10
+ ANSI_CODE_SPLITTING_STRING = "__"
255
11
 
256
12
  def get_chunk(sym, extended: false)
257
- code = Colors.fetch(sym.to_sym) do
13
+ code = Colors.fetch(sym) do
258
14
  if extended
259
- ExtendedColors.fetch(sym.to_sym) {
15
+ ExtendedColors.fetch(sym) {
260
16
  [:error, "bad color code :#{sym}"]
261
17
  }
262
18
  else
@@ -266,6 +22,16 @@ module L43
266
22
  use_color? ? code : ""
267
23
  end
268
24
 
25
+ # new_sym = scheme.fetch(sym.to_sym) { sym.to_sym }
26
+ # case _get_chunk(new_sym, extended:)
27
+ # in :error, _msg
28
+ # [:error, "bad color code :#{new_sym} (from scheme :#{sym})"]
29
+ # in encoded
30
+ # encoded
31
+ # end
32
+
33
+ # end
34
+
269
35
  def get_chunk!(sym, extended: false)
270
36
  case get_chunk(sym, extended:)
271
37
  in :error, msg
@@ -275,19 +41,43 @@ module L43
275
41
  end
276
42
  end
277
43
 
278
- def get_chunks(sym, extended:)
279
- sym.to_s.split(ANSI_CODE_SPLITTING_STRING).map do
280
- case get_chunk(it, extended:)
44
+ def get_chunks(sym, extended:, scheme: nil)
45
+ scheme ? _get_chunks_with_scheme(sym, extended:, scheme:) : _get_chunks_wo_scheme(sym, extended:)
46
+ end
47
+ def use_color? = @__use_color__ ||= !ENV['NO_COLOR']
48
+
49
+ private
50
+
51
+ def _get_chunks_wo_scheme(sym, extended:)
52
+ sym.to_s.split(ANSI_CODE_SPLITTING_STRING).map do |chunk|
53
+ case get_chunk(chunk.to_sym, extended:)
281
54
  in [:error, _messag] => error
282
55
  return error
283
56
  in encoded
284
57
  encoded
285
58
  end
286
59
  end
287
- .join
60
+ .join
288
61
  end
289
62
 
290
- def use_color? = @__use_color__ ||= !ENV['NO_COLOR']
63
+ def _get_chunks_with_scheme(sym, extended:, scheme:)
64
+ sym.to_s.split(ANSI_CODE_SPLITTING_STRING).map do
65
+ new_sym = scheme.fetch(it.to_sym, nil)
66
+ old_sym = it.to_sym if new_sym
67
+ case _get_chunks_wo_scheme(new_sym || it.to_sym, extended:)
68
+ in [:error, message] => error
69
+ if new_sym
70
+ return [:error, [message, "(from scheme :#{old_sym})"].join(" ")]
71
+ else
72
+ return error
73
+ end
74
+ in encoded
75
+ encoded
76
+ end
77
+ end
78
+ .join
79
+
80
+ end
291
81
  end
292
82
  end
293
83
  end
@@ -0,0 +1,255 @@
1
+ # frozen_string_literal: true
2
+
3
+ module L43
4
+ module SimpleColor
5
+ module ColorData
6
+ CSI = "\e["
7
+
8
+ Bold = "\x1b[1m"
9
+ Dim = "\x1b[2m"
10
+ Reset = "\x1b[0m"
11
+ Underline = "\x1b[4m"
12
+
13
+ Colors = {
14
+ black: "\x1b[30m",
15
+ blue: "\x1b[34m",
16
+ cyan: "\x1b[36m",
17
+ green: "\x1b[32m",
18
+ magenta: "\x1b[35m",
19
+ red: "\x1b[31m",
20
+ white: "\x1b[37m",
21
+ yellow: "\x1b[33m",
22
+
23
+ bgblack: "\x1b[40m",
24
+ bgblue: "\x1b[44m",
25
+ bgcyan: "\x1b[46m",
26
+ bggreen: "\x1b[42m",
27
+ bgmagenta: "\x1b[45m",
28
+ bgred: "\x1b[41m",
29
+ bgwhite: "\x1b[47m",
30
+ bgyellow: "\x1b[43m",
31
+
32
+ b: Bold,
33
+ bold: Bold,
34
+ d: Dim,
35
+ dim: Dim,
36
+ r: Reset,
37
+ reset: Reset,
38
+ ul: Underline,
39
+ underline: Underline,
40
+ }
41
+
42
+ RGB_COLORS = {
43
+ aqua: [0, 255, 255],
44
+ aquamarine1: [95, 255, 215],
45
+ aquamarine3: [95, 215, 175],
46
+ azure1: [240, 255, 255],
47
+ blue1: [0, 0, 255],
48
+ blue3: [0, 0, 175],
49
+ blue_violet: [95, 0, 255],
50
+ cadet_blue: [95, 175, 135],
51
+ chartreuse1: [135, 255, 0],
52
+ chartreuse2: [95, 255, 0],
53
+ chartreuse3: [95, 175, 0],
54
+ chartreuse4: [95, 135, 0],
55
+ cornflower_blue: [95, 135, 255],
56
+ cornsilk1: [255, 255, 215],
57
+ cyan1: [0, 255, 255],
58
+ cyan2: [0, 255, 215],
59
+ cyan3: [0, 215, 175],
60
+ dark_blue: [0, 0, 135],
61
+ dark_cyan: [0, 175, 135],
62
+ dark_goldenrod: [175, 135, 0],
63
+ dark_green: [0, 95, 0],
64
+ dark_khaki: [175, 175, 95],
65
+ dark_magenta: [135, 0, 135],
66
+ dark_olive_green1: [215, 255, 95],
67
+ dark_olive_green2: [175, 255, 95],
68
+ dark_olive_green3: [135, 175, 95],
69
+ dark_orange3: [175, 95, 0],
70
+ dark_orange: [255, 135, 0],
71
+ dark_red: [95, 0, 0],
72
+ dark_sea_green1: [175, 255, 215],
73
+ dark_sea_green2: [175, 215, 175],
74
+ dark_sea_green3: [135, 215, 175],
75
+ dark_sea_green4: [95, 135, 95],
76
+ dark_sea_green: [135, 175, 135],
77
+ dark_slate_gray1: [135, 255, 255],
78
+ dark_slate_gray2: [95, 255, 255],
79
+ dark_slate_gray3: [135, 215, 215],
80
+ dark_turquoise: [0, 215, 215],
81
+ dark_violet: [135, 0, 215],
82
+ deep_pink1: [255, 0, 135],
83
+ deep_pink2: [255, 0, 95],
84
+ deep_pink3: [215, 0, 95],
85
+ deep_pink4: [95, 0, 95],
86
+ deep_sky_blue1: [0, 175, 255],
87
+ deep_sky_blue2: [0, 175, 215],
88
+ deep_sky_blue3: [0, 135, 175],
89
+ deep_sky_blue4: [0, 95, 95],
90
+ dodger_blue1: [0, 135, 255],
91
+ dodger_blue2: [0, 95, 255],
92
+ dodger_blue3: [0, 95, 215],
93
+ fuchsia: [255, 0, 255],
94
+ gold1: [255, 215, 0],
95
+ gold3: [175, 175, 0],
96
+ green1: [0, 255, 0],
97
+ green3: [0, 175, 0],
98
+ green4: [0, 135, 0],
99
+ green_yellow: [175, 255, 0],
100
+ grey0: [0, 0, 0],
101
+ grey100: [255, 255, 255],
102
+ grey11: [28, 28, 28],
103
+ grey15: [38, 38, 38],
104
+ grey19: [48, 48, 48],
105
+ grey23: [58, 58, 58],
106
+ grey27: [68, 68, 68],
107
+ grey30: [78, 78, 78],
108
+ grey35: [88, 88, 88],
109
+ grey37: [95, 95, 95],
110
+ grey39: [98, 98, 98],
111
+ grey3: [8, 8, 8],
112
+ grey42: [108, 108, 108],
113
+ grey46: [118, 118, 118],
114
+ grey50: [128, 128, 128],
115
+ grey53: [135, 135, 135],
116
+ grey54: [138, 138, 138],
117
+ grey58: [148, 148, 148],
118
+ grey62: [158, 158, 158],
119
+ grey63: [175, 135, 175],
120
+ grey66: [168, 168, 168],
121
+ grey69: [175, 175, 175],
122
+ grey70: [178, 178, 178],
123
+ grey74: [188, 188, 188],
124
+ grey78: [198, 198, 198],
125
+ grey7: [18, 18, 18],
126
+ grey82: [208, 208, 208],
127
+ grey84: [215, 215, 215],
128
+ grey85: [218, 218, 218],
129
+ grey89: [228, 228, 228],
130
+ grey93: [238, 238, 238],
131
+ grey: [128, 128, 128],
132
+ honeydew2: [215, 255, 215],
133
+ hot_pink2: [215, 95, 175],
134
+ hot_pink3: [175, 95, 135],
135
+ hot_pink: [255, 95, 175],
136
+ indian_red1: [255, 95, 95],
137
+ indian_red: [175, 95, 95],
138
+ khaki1: [255, 255, 135],
139
+ khaki3: [215, 215, 95],
140
+ light_coral: [255, 135, 135],
141
+ light_cyan1: [215, 255, 255],
142
+ light_cyan3: [175, 215, 215],
143
+ light_goldenrod1: [255, 255, 95],
144
+ light_goldenrod2: [215, 215, 135],
145
+ light_goldenrod3: [215, 175, 95],
146
+ light_green: [135, 255, 95],
147
+ light_pink1: [255, 175, 175],
148
+ light_pink3: [215, 135, 135],
149
+ light_pink4: [135, 95, 95],
150
+ light_salmon1: [255, 175, 135],
151
+ light_salmon3: [175, 135, 95],
152
+ light_sea_green: [0, 175, 175],
153
+ light_sky_blue1: [175, 215, 255],
154
+ light_sky_blue3: [135, 175, 175],
155
+ light_slate_blue: [135, 135, 255],
156
+ light_slate_grey: [135, 135, 175],
157
+ light_steel_blue1: [215, 215, 255],
158
+ light_steel_blue3: [175, 175, 215],
159
+ light_steel_blue: [175, 175, 255],
160
+ light_yellow3: [215, 215, 175],
161
+ lime: [0, 255, 0],
162
+ magenta1: [255, 0, 255],
163
+ magenta2: [215, 0, 255],
164
+ magenta3: [175, 0, 175],
165
+ maroon: [128, 0, 0],
166
+ medium_orchid1: [215, 95, 255],
167
+ medium_orchid3: [175, 95, 175],
168
+ medium_orchid: [175, 95, 215],
169
+ medium_purple1: [175, 135, 255],
170
+ medium_purple2: [175, 95, 255],
171
+ medium_purple3: [135, 95, 175],
172
+ medium_purple4: [95, 95, 135],
173
+ medium_purple: [135, 135, 215],
174
+ medium_spring_green: [0, 255, 175],
175
+ medium_turquoise: [95, 215, 215],
176
+ medium_violet_red: [175, 0, 135],
177
+ misty_rose1: [255, 215, 215],
178
+ misty_rose3: [215, 175, 175],
179
+ navajo_white1: [255, 215, 175],
180
+ navajo_white3: [175, 175, 135],
181
+ navy: [0, 0, 128],
182
+ navy_blue: [0, 0, 95],
183
+ olive: [128, 128, 0],
184
+ orange: [255, 128, 0],
185
+ orange1: [255, 175, 0],
186
+ orange3: [215, 135, 0],
187
+ orange4: [95, 95, 0],
188
+ orange_red1: [255, 95, 0],
189
+ orchid1: [255, 135, 255],
190
+ orchid2: [255, 135, 215],
191
+ orchid: [215, 95, 215],
192
+ pale_green1: [135, 255, 175],
193
+ pale_green3: [95, 215, 95],
194
+ pale_turquoise1: [175, 255, 255],
195
+ pale_turquoise4: [95, 135, 135],
196
+ pale_violet_red1: [255, 135, 175],
197
+ pink1: [255, 175, 215],
198
+ pink3: [215, 135, 175],
199
+ plum1: [255, 175, 255],
200
+ plum2: [215, 175, 255],
201
+ plum3: [215, 135, 215],
202
+ plum4: [135, 95, 135],
203
+ purple3: [95, 0, 215],
204
+ purple4: [95, 0, 135],
205
+ purple: [128, 0, 128],
206
+ red1: [255, 0, 0],
207
+ red3: [175, 0, 0],
208
+ rosy_brown: [175, 135, 135],
209
+ royal_blue1: [95, 95, 255],
210
+ salmon1: [255, 135, 95],
211
+ sandy_brown: [255, 175, 95],
212
+ sea_green1: [95, 255, 135],
213
+ sea_green2: [95, 255, 95],
214
+ sea_green3: [95, 215, 135],
215
+ silver: [192, 192, 192],
216
+ sky_blue1: [135, 215, 255],
217
+ sky_blue2: [135, 175, 255],
218
+ sky_blue3: [95, 175, 215],
219
+ slate_blue1: [135, 95, 255],
220
+ slate_blue3: [95, 95, 175],
221
+ spring_green1: [0, 255, 135],
222
+ spring_green2: [0, 215, 135],
223
+ spring_green3: [0, 175, 95],
224
+ spring_green4: [0, 135, 95],
225
+ steel_blue1: [95, 175, 255],
226
+ steel_blue3: [95, 135, 215],
227
+ steel_blue: [95, 135, 175],
228
+ tan: [215, 175, 135],
229
+ teal: [0, 128, 128],
230
+ thistle1: [255, 215, 255],
231
+ thistle3: [215, 175, 215],
232
+ turquoise2: [0, 215, 255],
233
+ turquoise4: [0, 135, 135],
234
+ violet: [215, 135, 255],
235
+ wheat1: [255, 255, 175],
236
+ wheat4: [135, 135, 95],
237
+ yellow1: [255, 255, 0],
238
+ yellow2: [215, 255, 0],
239
+ yellow3: [175, 215, 0],
240
+ yellow4: [135, 135, 0]
241
+ }.map do |k, rgb|
242
+ [k, [CSI, "38;2;", *rgb.join(";"), "m"].join]
243
+ end.to_h
244
+
245
+ ExtendedColors =
246
+ (0..255)
247
+ .map {["color#{it}".to_sym, [CSI, "38;5;", it, "m"].join ]}
248
+ .to_h
249
+ .merge(RGB_COLORS)
250
+ .freeze
251
+
252
+ end
253
+ end
254
+ end
255
+ # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -14,8 +14,8 @@ module L43
14
14
  ColorSpecRgx = %r{(?:\s|\A):[__[:alnum:]]+(?:\s|\z)}
15
15
  Meta = %r{[:\s]+}
16
16
 
17
- def colorize(str, reset: true, extended: false, raises: false)
18
- case _colorize(str, extended:)
17
+ def colorize(str, reset: true, extended: false, raises: false, scheme: nil)
18
+ case _colorize(str, extended:, scheme:)
19
19
  in String => encoded
20
20
  reset ? encoded + get_chunk(:reset) : encoded
21
21
  in [:error, msg] => error
@@ -23,13 +23,13 @@ module L43
23
23
  end
24
24
  end
25
25
 
26
- def colorize!(str, reset: true, extended: false) = colorize(str, raises: true, reset:, extended:)
27
- def xcolorize(str, reset: true) = colorize(str, reset:, extended: true)
28
- def xcolorize!(str, reset: true) = colorize(str, reset:, extended: true, raises: true)
26
+ def colorize!(str, reset: true, extended: false, scheme: nil) = colorize(str, raises: true, reset:, extended:, scheme:)
27
+ def xcolorize(str, reset: true, scheme: nil) = colorize(str, reset:, extended: true, scheme:)
28
+ def xcolorize!(str, reset: true, scheme: nil) = colorize(str, reset:, extended: true, raises: true, scheme:)
29
29
 
30
30
  private
31
- def _colorize(str, reset: true, extended: false)
32
- case _replace_color_codes(str, extended:)
31
+ def _colorize(str, scheme:, extended:)
32
+ case _replace_color_codes(str, scheme:, extended:)
33
33
  in [:error, _msg] => error
34
34
  error
35
35
  in coded
@@ -37,10 +37,10 @@ module L43
37
37
  end
38
38
  end
39
39
 
40
- def _replace_color_codes(str, extended: false)
40
+ def _replace_color_codes(str, scheme:, extended:)
41
41
  str.gsub ColorSpecRgx do |match|
42
42
  spec = match.gsub(Meta, "")
43
- case get_chunks(spec, extended:)
43
+ case get_chunks(spec, extended:, scheme:)
44
44
  in [:error, _message] => error
45
45
  return error
46
46
  in code
@@ -7,7 +7,10 @@ module L43
7
7
  include Colorize
8
8
  attr_reader :extended, :fn, :reset, :stream
9
9
 
10
- def colorize_file(&blk)
10
+ def colorize_file(device: nil, &blk)
11
+ raise ArgumentError, "must not pass `device:' and block" if blk && device
12
+
13
+ return stream.each { |line, _lnb| device.puts line } if device
11
14
  return stream unless blk
12
15
 
13
16
  stream.map(&blk)
@@ -34,11 +37,11 @@ module L43
34
37
  end
35
38
  end
36
39
 
37
- def colorize_file(fn=nil, reset: true, &blk) =
38
- FileColorizer.new(fn, reset:).colorize_file(&blk)
40
+ def colorize_file(fn=nil, reset: true, device: nil, &blk) =
41
+ FileColorizer.new(fn, reset:).colorize_file(device:, &blk)
39
42
 
40
- def xcolorize_file(fn=nil, reset: true, &blk) =
41
- FileColorizer.new(fn, reset:, extended: true).colorize_file(&blk)
43
+ def xcolorize_file(fn=nil, reset: true, device: nil, &blk) =
44
+ FileColorizer.new(fn, reset:, extended: true).colorize_file(device:, &blk)
42
45
  end
43
46
  end
44
47
  # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -2,7 +2,7 @@
2
2
 
3
3
  module L43
4
4
  module SimpleColor
5
- VERSION = '0.2.1'
5
+ VERSION = '0.2.3'
6
6
  end
7
7
  end
8
8
  # SPDX-License-Identifier: AGPL-3.0-or-later
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: l43_simple_color
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
@@ -39,6 +39,7 @@ files:
39
39
  - lib/l43/simple_color.rb
40
40
  - lib/l43/simple_color/cli.rb
41
41
  - lib/l43/simple_color/color_data.rb
42
+ - lib/l43/simple_color/color_definitions.rb
42
43
  - lib/l43/simple_color/colorize.rb
43
44
  - lib/l43/simple_color/file_colorizer.rb
44
45
  - lib/l43/simple_color/version.rb