ex_aequo_base 0.2.0 → 0.3.1

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: b07e39f7fa5cfc7d8dbd8db59b023f831ec214e3d281bc55f5430afb815c9028
4
- data.tar.gz: 2fe81797ea2ed2a385dda8b8637aa8618ee2a4ff75fff224120d7cc09f0b6038
3
+ metadata.gz: 0ae7088c186aa04b585d985ecec0f602695cee0b6ec6e0c333242633440ffb9d
4
+ data.tar.gz: 40c5d9591388596ec3c1d6f2b251192da081c02854dabfd6c8fcb233766185ef
5
5
  SHA512:
6
- metadata.gz: e011a5f3f439d0e2b8881885f6ac9bba59a7bdd8d7f0f65be791d24d3632ad644fb5d52b7c9addaa7ac57aab145cf08da2dd7ddc2aec72b4f25e9fbe81fe7773
7
- data.tar.gz: c9ee6f3e9bb090efe94a8d17bdf82d1f5b97255376c542d57c2ac306efc4d52b4615abcb5ba3b77fd61c327134c82158e8e0d293b36a04b32d8e81edc1874b94
6
+ metadata.gz: a32aabc72664eef456004008c91fbe86107fabbcb5ab12afefa42775cd5e65e9f0bde4fcc2474e6dfae02f767ba260d079d5b4b460517965c210938378b26db7
7
+ data.tar.gz: 85ebe63094aedf4a8eaf42873842aae5b6512b3aedb6fc02604b6e3ed2b82c90b7cf243859f045da2228b855840260a1455dcd45e1f5d3d7c09b935525c6f7bd
@@ -1,13 +1,15 @@
1
1
  # frozen_string_literal: true
2
- require_relative 'colorize'
2
+ #
3
+ require_relative 'kernel'
4
+
3
5
  require_relative 'enumerable'
4
6
  require_relative 'fn'
5
7
  require_relative 'forwarder'
6
8
  require_relative 'function'
7
- require_relative 'kernel'
8
9
  require_relative 'import_none'
9
10
  require_relative 'open_struct'
10
11
  require_relative 'regexp'
12
+ require_relative 'result'
11
13
  require_relative 'string'
12
14
  require_relative 'to_proc'
13
15
  # require_relative 'match_data'
@@ -2,7 +2,6 @@
2
2
 
3
3
  require_relative 'all'
4
4
 
5
- Colorize = ExAequo::Base::Colorize
6
5
  Forwarder = ExAequo::Base::Forwarder
7
6
  Function = ExAequo::Base::Function
8
7
 
@@ -39,7 +39,7 @@ module ExAequo::Base::KernelHelper extend self
39
39
  dir = check_file(file)
40
40
  wc = descend ? '/**/*.rb' : '/*.rb'
41
41
  Dir.glob(File.join(dir, wc)).each do |f|
42
- require f.sub(ExAequo::Base::RbExtensionRgx, '') unless f == exclude
42
+ require f.sub(ExAequo::Base::RbExtensionRgx, '') unless f.gsub('./', '') == exclude
43
43
  end
44
44
  end
45
45
  end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ExAequo
4
+ module Base
5
+ class Result
6
+ module ClassMethods
7
+ def new(*, **) = raise NoMethodError, "undefined method 'new' for #<Class:Result>"
8
+
9
+ def ok(result)
10
+ allocate.tap do |object|
11
+ object.instance_eval do
12
+ @ok = true
13
+ @result = result
14
+ end
15
+ end
16
+ end
17
+
18
+ alias_method :success, :ok
19
+
20
+ def nok(error)
21
+ allocate.tap do |object|
22
+ object.instance_eval do
23
+ @ok = false
24
+ @error = error
25
+ end
26
+ end
27
+ end
28
+
29
+ alias_method :failure, :nok
30
+
31
+ end
32
+
33
+ private
34
+
35
+ extend ClassMethods
36
+ end
37
+ end
38
+ end
39
+ # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'result/class_methods'
4
+ module ExAequo
5
+ module Base
6
+ class Result
7
+ IllegalState = Class.new(RuntimeError)
8
+
9
+ def deconstruct_keys(*) = {ok: @ok, result: @result, error: @error}
10
+
11
+ def error
12
+ raise IllegalState, "must not invoke error on an ok result" if @ok
13
+ @error
14
+ end
15
+
16
+ def ok? = @ok
17
+
18
+ def result
19
+ raise IllegalState, "must not invoke result on an error result" unless @ok
20
+ @result
21
+ end
22
+
23
+ def to_h
24
+ ok? ? {ok: true, result: @result} : {ok: false, error: @error}
25
+ end
26
+ end
27
+ end
28
+ end
29
+ # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -2,7 +2,7 @@
2
2
 
3
3
  module ExAequo
4
4
  module Base
5
- VERSION = '0.2.0'
5
+ VERSION = '0.3.1'
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: ex_aequo_base
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
@@ -47,9 +47,6 @@ files:
47
47
  - README.md
48
48
  - lib/ex_aequo/base.rb
49
49
  - lib/ex_aequo/base/all.rb
50
- - lib/ex_aequo/base/colorize.rb
51
- - lib/ex_aequo/base/colorize/color_definitions.rb
52
- - lib/ex_aequo/base/colorize/colorizer.rb
53
50
  - lib/ex_aequo/base/constants.rb
54
51
  - lib/ex_aequo/base/enumerable.rb
55
52
  - lib/ex_aequo/base/enumerable/array.rb
@@ -73,8 +70,9 @@ files:
73
70
  - lib/ex_aequo/base/none.rb
74
71
  - lib/ex_aequo/base/open_struct.rb
75
72
  - lib/ex_aequo/base/regexp.rb
73
+ - lib/ex_aequo/base/result.rb
74
+ - lib/ex_aequo/base/result/class_methods.rb
76
75
  - lib/ex_aequo/base/string.rb
77
- - lib/ex_aequo/base/string/colorize.rb
78
76
  - lib/ex_aequo/base/to_proc.rb
79
77
  - lib/ex_aequo/base/to_proc/false_class.rb
80
78
  - lib/ex_aequo/base/to_proc/nil_class.rb
@@ -1,513 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- ANSI_COLORS = {
4
- aqua: [0, 255, 255],
5
- aquamarine1: [95, 255, 215],
6
- aquamarine3: [95, 215, 175],
7
- azure1: [240, 255, 255],
8
- bg_black: 40,
9
- bg_red: 41,
10
- bg_green: 42,
11
- bg_yellow: 43,
12
- bg_blue: 44,
13
- bg_magenta: 45,
14
- bg_cyan: 46,
15
- bg_white: 47,
16
- black: 30,
17
- blue1: [0, 0, 255],
18
- blue3: [0, 0, 175],
19
- blue: 34,
20
- blue_violet: [95, 0, 255],
21
- bold: 1,
22
- cadet_blue: [95, 175, 135],
23
- chartreuse1: [135, 255, 0],
24
- chartreuse2: [95, 255, 0],
25
- chartreuse3: [95, 175, 0],
26
- chartreuse4: [95, 135, 0],
27
- color0: [:color, 0],
28
- color1: [:color, 1],
29
- color2: [:color, 2],
30
- color3: [:color, 3],
31
- color4: [:color, 4],
32
- color5: [:color, 5],
33
- color6: [:color, 6],
34
- color7: [:color, 7],
35
- color8: [:color, 8],
36
- color9: [:color, 9],
37
- color10: [:color, 10],
38
- color11: [:color, 11],
39
- color12: [:color, 12],
40
- color13: [:color, 13],
41
- color14: [:color, 14],
42
- color15: [:color, 15],
43
- color16: [:color, 16],
44
- color17: [:color, 17],
45
- color18: [:color, 18],
46
- color19: [:color, 19],
47
- color20: [:color, 20],
48
- color21: [:color, 21],
49
- color22: [:color, 22],
50
- color23: [:color, 23],
51
- color24: [:color, 24],
52
- color25: [:color, 25],
53
- color26: [:color, 26],
54
- color27: [:color, 27],
55
- color28: [:color, 28],
56
- color29: [:color, 29],
57
- color30: [:color, 30],
58
- color31: [:color, 31],
59
- color32: [:color, 32],
60
- color33: [:color, 33],
61
- color34: [:color, 34],
62
- color35: [:color, 35],
63
- color36: [:color, 36],
64
- color37: [:color, 37],
65
- color38: [:color, 38],
66
- color39: [:color, 39],
67
- color40: [:color, 40],
68
- color41: [:color, 41],
69
- color42: [:color, 42],
70
- color43: [:color, 43],
71
- color44: [:color, 44],
72
- color45: [:color, 45],
73
- color46: [:color, 46],
74
- color47: [:color, 47],
75
- color48: [:color, 48],
76
- color49: [:color, 49],
77
- color50: [:color, 50],
78
- color51: [:color, 51],
79
- color52: [:color, 52],
80
- color53: [:color, 53],
81
- color54: [:color, 54],
82
- color55: [:color, 55],
83
- color56: [:color, 56],
84
- color57: [:color, 57],
85
- color58: [:color, 58],
86
- color59: [:color, 59],
87
- color60: [:color, 60],
88
- color61: [:color, 61],
89
- color62: [:color, 62],
90
- color63: [:color, 63],
91
- color64: [:color, 64],
92
- color65: [:color, 65],
93
- color66: [:color, 66],
94
- color67: [:color, 67],
95
- color68: [:color, 68],
96
- color69: [:color, 69],
97
- color70: [:color, 70],
98
- color71: [:color, 71],
99
- color72: [:color, 72],
100
- color73: [:color, 73],
101
- color74: [:color, 74],
102
- color75: [:color, 75],
103
- color76: [:color, 76],
104
- color77: [:color, 77],
105
- color78: [:color, 78],
106
- color79: [:color, 79],
107
- color80: [:color, 80],
108
- color81: [:color, 81],
109
- color82: [:color, 82],
110
- color83: [:color, 83],
111
- color84: [:color, 84],
112
- color85: [:color, 85],
113
- color86: [:color, 86],
114
- color87: [:color, 87],
115
- color88: [:color, 88],
116
- color89: [:color, 89],
117
- color90: [:color, 90],
118
- color91: [:color, 91],
119
- color92: [:color, 92],
120
- color93: [:color, 93],
121
- color94: [:color, 94],
122
- color95: [:color, 95],
123
- color96: [:color, 96],
124
- color97: [:color, 97],
125
- color98: [:color, 98],
126
- color99: [:color, 99],
127
- color100: [:color, 100],
128
- color101: [:color, 101],
129
- color102: [:color, 102],
130
- color103: [:color, 103],
131
- color104: [:color, 104],
132
- color105: [:color, 105],
133
- color106: [:color, 106],
134
- color107: [:color, 107],
135
- color108: [:color, 108],
136
- color109: [:color, 109],
137
- color110: [:color, 110],
138
- color111: [:color, 111],
139
- color112: [:color, 112],
140
- color113: [:color, 113],
141
- color114: [:color, 114],
142
- color115: [:color, 115],
143
- color116: [:color, 116],
144
- color117: [:color, 117],
145
- color118: [:color, 118],
146
- color119: [:color, 119],
147
- color120: [:color, 120],
148
- color121: [:color, 121],
149
- color122: [:color, 122],
150
- color123: [:color, 123],
151
- color124: [:color, 124],
152
- color125: [:color, 125],
153
- color126: [:color, 126],
154
- color127: [:color, 127],
155
- color128: [:color, 128],
156
- color129: [:color, 129],
157
- color130: [:color, 130],
158
- color131: [:color, 131],
159
- color132: [:color, 132],
160
- color133: [:color, 133],
161
- color134: [:color, 134],
162
- color135: [:color, 135],
163
- color136: [:color, 136],
164
- color137: [:color, 137],
165
- color138: [:color, 138],
166
- color139: [:color, 139],
167
- color140: [:color, 140],
168
- color141: [:color, 141],
169
- color142: [:color, 142],
170
- color143: [:color, 143],
171
- color144: [:color, 144],
172
- color145: [:color, 145],
173
- color146: [:color, 146],
174
- color147: [:color, 147],
175
- color148: [:color, 148],
176
- color149: [:color, 149],
177
- color150: [:color, 150],
178
- color151: [:color, 151],
179
- color152: [:color, 152],
180
- color153: [:color, 153],
181
- color154: [:color, 154],
182
- color155: [:color, 155],
183
- color156: [:color, 156],
184
- color157: [:color, 157],
185
- color158: [:color, 158],
186
- color159: [:color, 159],
187
- color160: [:color, 160],
188
- color161: [:color, 161],
189
- color162: [:color, 162],
190
- color163: [:color, 163],
191
- color164: [:color, 164],
192
- color165: [:color, 165],
193
- color166: [:color, 166],
194
- color167: [:color, 167],
195
- color168: [:color, 168],
196
- color169: [:color, 169],
197
- color170: [:color, 170],
198
- color171: [:color, 171],
199
- color172: [:color, 172],
200
- color173: [:color, 173],
201
- color174: [:color, 174],
202
- color175: [:color, 175],
203
- color176: [:color, 176],
204
- color177: [:color, 177],
205
- color178: [:color, 178],
206
- color179: [:color, 179],
207
- color180: [:color, 180],
208
- color181: [:color, 181],
209
- color182: [:color, 182],
210
- color183: [:color, 183],
211
- color184: [:color, 184],
212
- color185: [:color, 185],
213
- color186: [:color, 186],
214
- color187: [:color, 187],
215
- color188: [:color, 188],
216
- color189: [:color, 189],
217
- color190: [:color, 190],
218
- color191: [:color, 191],
219
- color192: [:color, 192],
220
- color193: [:color, 193],
221
- color194: [:color, 194],
222
- color195: [:color, 195],
223
- color196: [:color, 196],
224
- color197: [:color, 197],
225
- color198: [:color, 198],
226
- color199: [:color, 199],
227
- color200: [:color, 200],
228
- color201: [:color, 201],
229
- color202: [:color, 202],
230
- color203: [:color, 203],
231
- color204: [:color, 204],
232
- color205: [:color, 205],
233
- color206: [:color, 206],
234
- color207: [:color, 207],
235
- color208: [:color, 208],
236
- color209: [:color, 209],
237
- color210: [:color, 210],
238
- color211: [:color, 211],
239
- color212: [:color, 212],
240
- color213: [:color, 213],
241
- color214: [:color, 214],
242
- color215: [:color, 215],
243
- color216: [:color, 216],
244
- color217: [:color, 217],
245
- color218: [:color, 218],
246
- color219: [:color, 219],
247
- color220: [:color, 220],
248
- color221: [:color, 221],
249
- color222: [:color, 222],
250
- color223: [:color, 223],
251
- color224: [:color, 224],
252
- color225: [:color, 225],
253
- color226: [:color, 226],
254
- color227: [:color, 227],
255
- color228: [:color, 228],
256
- color229: [:color, 229],
257
- color230: [:color, 230],
258
- color231: [:color, 231],
259
- color232: [:color, 232],
260
- color233: [:color, 233],
261
- color234: [:color, 234],
262
- color235: [:color, 235],
263
- color236: [:color, 236],
264
- color237: [:color, 237],
265
- color238: [:color, 238],
266
- color239: [:color, 239],
267
- color240: [:color, 240],
268
- color241: [:color, 241],
269
- color242: [:color, 242],
270
- color243: [:color, 243],
271
- color244: [:color, 244],
272
- color245: [:color, 245],
273
- color246: [:color, 246],
274
- color247: [:color, 247],
275
- color248: [:color, 248],
276
- color249: [:color, 249],
277
- color250: [:color, 250],
278
- color251: [:color, 251],
279
- color252: [:color, 252],
280
- color253: [:color, 253],
281
- color254: [:color, 254],
282
- color255: [:color, 255],
283
- cornflower_blue: [95, 135, 255],
284
- cornsilk1: [255, 255, 215],
285
- cyan1: [0, 255, 255],
286
- cyan2: [0, 255, 215],
287
- cyan3: [0, 215, 175],
288
- cyan: 36,
289
- dark_blue: [0, 0, 135],
290
- dark_cyan: [0, 175, 135],
291
- dark_goldenrod: [175, 135, 0],
292
- dark_green: [0, 95, 0],
293
- dark_khaki: [175, 175, 95],
294
- dark_magenta: [135, 0, 135],
295
- dark_olive_green1: [215, 255, 95],
296
- dark_olive_green2: [175, 255, 95],
297
- dark_olive_green3: [135, 175, 95],
298
- dark_orange3: [175, 95, 0],
299
- dark_orange: [255, 135, 0],
300
- dark_red: [95, 0, 0],
301
- dark_sea_green1: [175, 255, 215],
302
- dark_sea_green2: [175, 215, 175],
303
- dark_sea_green3: [135, 215, 175],
304
- dark_sea_green4: [95, 135, 95],
305
- dark_sea_green: [135, 175, 135],
306
- dark_slate_gray1: [135, 255, 255],
307
- dark_slate_gray2: [95, 255, 255],
308
- dark_slate_gray3: [135, 215, 215],
309
- dark_turquoise: [0, 215, 215],
310
- dark_violet: [135, 0, 215],
311
- deep_pink1: [255, 0, 135],
312
- deep_pink2: [255, 0, 95],
313
- deep_pink3: [215, 0, 95],
314
- deep_pink4: [95, 0, 95],
315
- deep_sky_blue1: [0, 175, 255],
316
- deep_sky_blue2: [0, 175, 215],
317
- deep_sky_blue3: [0, 135, 175],
318
- deep_sky_blue4: [0, 95, 95],
319
- dim: 2,
320
- dodger_blue1: [0, 135, 255],
321
- dodger_blue2: [0, 95, 255],
322
- dodger_blue3: [0, 95, 215],
323
- fuchsia: [255, 0, 255],
324
- gold1: [255, 215, 0],
325
- gold3: [175, 175, 0],
326
- green1: [0, 255, 0],
327
- green3: [0, 175, 0],
328
- green4: [0, 135, 0],
329
- green: 32,
330
- green_yellow: [175, 255, 0],
331
- grey0: [0, 0, 0],
332
- grey100: [255, 255, 255],
333
- grey11: [28, 28, 28],
334
- grey15: [38, 38, 38],
335
- grey19: [48, 48, 48],
336
- grey23: [58, 58, 58],
337
- grey27: [68, 68, 68],
338
- grey30: [78, 78, 78],
339
- grey35: [88, 88, 88],
340
- grey37: [95, 95, 95],
341
- grey39: [98, 98, 98],
342
- grey3: [8, 8, 8],
343
- grey42: [108, 108, 108],
344
- grey46: [118, 118, 118],
345
- grey50: [128, 128, 128],
346
- grey53: [135, 135, 135],
347
- grey54: [138, 138, 138],
348
- grey58: [148, 148, 148],
349
- grey62: [158, 158, 158],
350
- grey63: [175, 135, 175],
351
- grey66: [168, 168, 168],
352
- grey69: [175, 175, 175],
353
- grey70: [178, 178, 178],
354
- grey74: [188, 188, 188],
355
- grey78: [198, 198, 198],
356
- grey7: [18, 18, 18],
357
- grey82: [208, 208, 208],
358
- grey84: [215, 215, 215],
359
- grey85: [218, 218, 218],
360
- grey89: [228, 228, 228],
361
- grey93: [238, 238, 238],
362
- grey: [128, 128, 128],
363
- honeydew2: [215, 255, 215],
364
- hot_pink2: [215, 95, 175],
365
- hot_pink3: [175, 95, 135],
366
- hot_pink: [255, 95, 175],
367
- indian_red1: [255, 95, 95],
368
- indian_red: [175, 95, 95],
369
- italic: 3,
370
- khaki1: [255, 255, 135],
371
- khaki3: [215, 215, 95],
372
- light_coral: [255, 135, 135],
373
- light_cyan1: [215, 255, 255],
374
- light_cyan3: [175, 215, 215],
375
- light_goldenrod1: [255, 255, 95],
376
- light_goldenrod2: [215, 215, 135],
377
- light_goldenrod3: [215, 175, 95],
378
- light_green: [135, 255, 95],
379
- light_pink1: [255, 175, 175],
380
- light_pink3: [215, 135, 135],
381
- light_pink4: [135, 95, 95],
382
- light_salmon1: [255, 175, 135],
383
- light_salmon3: [175, 135, 95],
384
- light_sea_green: [0, 175, 175],
385
- light_sky_blue1: [175, 215, 255],
386
- light_sky_blue3: [135, 175, 175],
387
- light_slate_blue: [135, 135, 255],
388
- light_slate_grey: [135, 135, 175],
389
- light_steel_blue1: [215, 215, 255],
390
- light_steel_blue3: [175, 175, 215],
391
- light_steel_blue: [175, 175, 255],
392
- light_yellow3: [215, 215, 175],
393
- lime: [0, 255, 0],
394
- magenta1: [255, 0, 255],
395
- magenta2: [215, 0, 255],
396
- magenta3: [175, 0, 175],
397
- magenta: 35,
398
- maroon: [128, 0, 0],
399
- medium_orchid1: [215, 95, 255],
400
- medium_orchid3: [175, 95, 175],
401
- medium_orchid: [175, 95, 215],
402
- medium_purple1: [175, 135, 255],
403
- medium_purple2: [175, 95, 255],
404
- medium_purple3: [135, 95, 175],
405
- medium_purple4: [95, 95, 135],
406
- medium_purple: [135, 135, 215],
407
- medium_spring_green: [0, 255, 175],
408
- medium_turquoise: [95, 215, 215],
409
- medium_violet_red: [175, 0, 135],
410
- misty_rose1: [255, 215, 215],
411
- misty_rose3: [215, 175, 175],
412
- navajo_white1: [255, 215, 175],
413
- navajo_white3: [175, 175, 135],
414
- navy: [0, 0, 128],
415
- navy_blue: [0, 0, 95],
416
- olive: [128, 128, 0],
417
- orange: [255, 128, 0],
418
- orange1: [255, 175, 0],
419
- orange3: [215, 135, 0],
420
- orange4: [95, 95, 0],
421
- orange_red1: [255, 95, 0],
422
- orchid1: [255, 135, 255],
423
- orchid2: [255, 135, 215],
424
- orchid: [215, 95, 215],
425
- pale_green1: [135, 255, 175],
426
- pale_green3: [95, 215, 95],
427
- pale_turquoise1: [175, 255, 255],
428
- pale_turquoise4: [95, 135, 135],
429
- pale_violet_red1: [255, 135, 175],
430
- pink1: [255, 175, 215],
431
- pink3: [215, 135, 175],
432
- plum1: [255, 175, 255],
433
- plum2: [215, 175, 255],
434
- plum3: [215, 135, 215],
435
- plum4: [135, 95, 135],
436
- purple3: [95, 0, 215],
437
- purple4: [95, 0, 135],
438
- purple: [128, 0, 128],
439
- red1: [255, 0, 0],
440
- red3: [175, 0, 0],
441
- red: 31,
442
- reset: 0,
443
- rosy_brown: [175, 135, 135],
444
- royal_blue1: [95, 95, 255],
445
- salmon1: [255, 135, 95],
446
- sandy_brown: [255, 175, 95],
447
- sea_green1: [95, 255, 135],
448
- sea_green2: [95, 255, 95],
449
- sea_green3: [95, 215, 135],
450
- silver: [192, 192, 192],
451
- sky_blue1: [135, 215, 255],
452
- sky_blue2: [135, 175, 255],
453
- sky_blue3: [95, 175, 215],
454
- slate_blue1: [135, 95, 255],
455
- slate_blue3: [95, 95, 175],
456
- spring_green1: [0, 255, 135],
457
- spring_green2: [0, 215, 135],
458
- spring_green3: [0, 175, 95],
459
- spring_green4: [0, 135, 95],
460
- steel_blue1: [95, 175, 255],
461
- steel_blue3: [95, 135, 215],
462
- steel_blue: [95, 135, 175],
463
- tan: [215, 175, 135],
464
- teal: [0, 128, 128],
465
- thistle1: [255, 215, 255],
466
- thistle3: [215, 175, 215],
467
- turquoise2: [0, 215, 255],
468
- turquoise4: [0, 135, 135],
469
- uline: 4,
470
- underline: 4,
471
- violet: [215, 135, 255],
472
- wheat1: [255, 255, 175],
473
- wheat4: [135, 135, 95],
474
- white: 37,
475
- yellow1: [255, 255, 0],
476
- yellow2: [215, 255, 0],
477
- yellow3: [175, 215, 0],
478
- yellow4: [135, 135, 0],
479
- yellow: 33
480
- }
481
-
482
- module ExAequo
483
- module Base
484
- module Colorize
485
- module ColorDefinitions extend self
486
-
487
- def get(color, no_color)
488
- color = find_color(color)
489
- if color
490
- return '' if no_color
491
- color
492
- end
493
- end
494
-
495
- private
496
- def find_color(color)
497
- case ANSI_COLORS.fetch(color.to_sym, nil)
498
- in [r, g, b]
499
- "\e[38;2;#{r};#{g};#{b}m"
500
- in [:color, col]
501
- "\e[35;5;#{col}m"
502
- in nil
503
- nil
504
- in value
505
- "\e[#{value}m"
506
- end
507
- end
508
- end
509
- end
510
-
511
- end
512
- end
513
- # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -1,154 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ExAequo
4
- module Base
5
- module Colorize
6
-
7
- module Colorizer extend self
8
-
9
- def colored(*chunks)
10
- no_color = ENV.fetch('NO_COLOR', false)
11
- chunks
12
- .flatten
13
- .map { colorize_chunk it, no_color }
14
- .join
15
- end
16
-
17
- def colorize(line, reset: false)
18
- line = line.chomp
19
- no_color = ENV.fetch('NO_COLOR', false)
20
- case parse(line.grapheme_clusters, no_color)
21
- in {ok: true, result:}
22
- {ok: true, result: join_result(result, no_color:, reset:)}
23
- in error
24
- error
25
- end
26
- end
27
-
28
- def colorize_file(file, device: $stdout, reset: false)
29
- file = File.open(file, 'r') if String === file
30
-
31
- at_exit do
32
- file.close rescue nil
33
- end
34
- colorize_lines( file.readlines(chomp: true), device:, reset: )
35
- end
36
-
37
- def colorize_lines(lines, reset: false, device: $stdout)
38
- lines = lines.split(%r{\n\r?}) if String === lines
39
- lines
40
- .each_with_index do | line, idx |
41
- case colorize(line, reset:)
42
- in {ok: true, result:}
43
- device.puts result
44
- in {ok: false, error:}
45
- $stderr.puts("ERROR in line #{idx.succ} ** #{error} **")
46
- end
47
- end
48
- end
49
-
50
- def pcolored(*chunks, device: $stderr)
51
- device.puts(colored(*chunks))
52
- end
53
-
54
- private
55
-
56
- def app(ary, ary_or_elem)
57
- case ary_or_elem
58
- when Array
59
- [*ary, *ary_or_elem]
60
- else
61
- [*ary, ary_or_elem]
62
- end
63
- end
64
-
65
- def check_color_definition(rest, no_color,color)
66
- case ColorDefinitions.get(color, no_color)
67
- in nil
68
- {ok: false, error: "undefined color #{color}"}
69
- in color
70
- {ok: true, color:}
71
- end
72
- end
73
-
74
- def colorize_chunk(chunk, no_color)
75
- case chunk
76
- in Symbol
77
- get_color!(chunk, no_color)
78
- else
79
- chunk.to_s
80
- end
81
- end
82
-
83
- def get_color!(color, no_color)
84
- case ColorDefinitions.get(color, no_color)
85
- in nil
86
- raise "Bad color definition #{color.inspect}"
87
- in color
88
- color
89
- end
90
- end
91
-
92
- def join_result(result, no_color:, reset:)
93
- app(result, reset ? get_color!(:reset, no_color) : '')
94
- .join
95
- end
96
-
97
- def parse(line, no_color, result = [])
98
- # p(line:, result:)
99
- case line
100
- in []
101
- {ok: true, result:}
102
- in ['<', '<', *rest]
103
- parse(rest, no_color, app(result, '<'))
104
- in ['$', '$', *rest]
105
- parse(rest, no_color, app(result, '$'))
106
- in ['$', *rest]
107
- parse(rest, no_color, app(result, reset(no_color)))
108
- in ['<', *rest]
109
- parse_color(rest, no_color, result)
110
- in [char, *rest]
111
- parse(rest, no_color, app(result, char))
112
- end
113
- end
114
-
115
- def parse_color(line, no_color, result, color=[])
116
- # p(line:line, result:, color:)
117
- case line
118
- in []
119
- {ok: false, error: "Incomplete Color Spec #{color.join}"}
120
- in ['>', *rest]
121
- parse_continue_after_color(rest, no_color, result, color.join)
122
- in [',', *rest]
123
- parse_next_color(rest, no_color, result, color.join)
124
- in [char, *rest]
125
- parse_color(rest, no_color, result, app(color, char))
126
- end
127
- end
128
-
129
- def parse_continue_after_color(rest, no_color, result, color)
130
- case check_color_definition(rest, no_color, color)
131
- in {ok: true, color:}
132
- parse(rest, no_color, app(result, color))
133
- in error
134
- error
135
- end
136
- end
137
-
138
- def parse_next_color(rest, no_color, result, color)
139
- case check_color_definition(rest, no_color, color)
140
- in {ok: true, color:}
141
- parse_color(rest, no_color, app(result, color))
142
- in error
143
- error
144
- end
145
- end
146
-
147
- def reset(no_color)
148
- get_color!(:reset, no_color)
149
- end
150
- end
151
- end
152
- end
153
- end
154
- # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'kernel'
4
- require_subdir __FILE__
5
- require 'forwardable'
6
- module ExAequo
7
- module Base
8
- module Colorize extend self
9
- extend Forwardable
10
-
11
- def_delegators Colorizer, :colored, :colorize, :colorize_file, :colorize_lines, :pcolored
12
-
13
- end
14
- end
15
- end
16
- # SPDX-License-Identifier: AGPL-3.0-or-later
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative '../colorize/colorizer'
4
- class String
5
- def colored(color, reset: true)
6
- colors = [color, self, (reset ? :reset : nil)].compact
7
- Colorize::Colorizer.colored(*colors)
8
- end
9
-
10
- def pcolored(color, device: $stdout) = Colorize::Colorizer.pcolored(color, self, device:)
11
- end
12
- # SPDX-License-Identifier: AGPL-3.0-or-later