l43_simple_color 0.2.0 → 0.2.2

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: e4eb4f71f5445e06dc4dac9a05dd23129551f43a1d576a0610ce04cf9192ec1d
4
- data.tar.gz: a9d0a1d7ab3d65180009ffc456e8081aebfd9e33a63436c6b490afa305eece4c
3
+ metadata.gz: bff60b5a27296ad1f63e044e336e345e761de3421632cd1ec36b3be1af95f42b
4
+ data.tar.gz: e1a6f5991a0fb3f12f3bf0589192f21cd351f12611b0d4c2a8cfdb7e803030ee
5
5
  SHA512:
6
- metadata.gz: 3c9498643606ebbf94451660ad85b775e58989843006cf53ecfd6d74d285fdb57914df3ea752d88db1af7090488dca9053a659e83bd9b33bcc50f58b8184b502
7
- data.tar.gz: da9b9c9ec8148288c02254985549d07848048cb2c2c44f80d260d4d4e33b29e137e1f3b0b9903c7456fc9a25685439b26ccbd812d889d3184100946bb79c1c60
6
+ metadata.gz: f754bcaa42b71a486d8b50feac43efb1e1f08eaed3e6fd54ec9597d9a47e636c5b2e55918dfb8351661366bbafe163068ed0849ad6e442362be54953b6509257
7
+ data.tar.gz: 1507d8f78ca055beacdd9d0ddc578d9871ad536f33b52d6aff6a36cced5d95f082c2dc355e39e47cb82cc4186e3e2918dd709de7fd3e96b991e22d4a7150f88d
data/bin/simple_color CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
- require_relative "../lib/l43/simple_color"
4
- require_relative "../lib/l43/simple_color/cli"
3
+ $: << File.expand_path("../lib", __FILE__)
4
+ require "l43/simple_color/cli"
5
5
 
6
6
  L43::SimpleColor::Cli.run(ARGV)
7
7
 
@@ -1,20 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'colorize'
3
+ require_relative 'file_colorizer'
4
4
  module L43
5
5
  module SimpleColor
6
6
  module Cli extend self
7
- include Colorize
8
7
  def run(argv)
9
- device = make_device(argv.first)
10
- device.map { |line|
11
- puts(xcolorize!(line))
12
- }
13
- end
14
-
15
- private
16
- def make_device(fn)
17
- (fn ? File.open(fn) : $stdin).each(chomp: true)
8
+ SimpleColor.xcolorize_file(argv.first).each do |line, _|
9
+ puts line
10
+ end
18
11
  end
19
12
  end
20
13
  end
@@ -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,30 +14,22 @@ 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)
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
- in error
22
- error
23
- end
24
- end
25
-
26
- def colorize!(str, reset: true, extended: false)
27
- case colorize(str, reset:, extended:)
28
- in [:error, msg]
29
- raise BadColor, msg
30
- in result
31
- result
21
+ in [:error, msg] => error
22
+ raises ? raise(BadColor, msg) : error
32
23
  end
33
24
  end
34
25
 
35
- def xcolorize(str, reset: true) = colorize(str, reset:, extended: true)
36
- def xcolorize!(str, reset: true) = colorize!(str, reset:, extended: 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:)
37
29
 
38
30
  private
39
- def _colorize(str, reset: true, extended: false)
40
- case _replace_color_codes(str, extended:)
31
+ def _colorize(str, scheme:, extended:)
32
+ case _replace_color_codes(str, scheme:, extended:)
41
33
  in [:error, _msg] => error
42
34
  error
43
35
  in coded
@@ -45,10 +37,10 @@ module L43
45
37
  end
46
38
  end
47
39
 
48
- def _replace_color_codes(str, extended: false)
40
+ def _replace_color_codes(str, scheme:, extended:)
49
41
  str.gsub ColorSpecRgx do |match|
50
42
  spec = match.gsub(Meta, "")
51
- case get_chunks(spec, extended:)
43
+ case get_chunks(spec, extended:, scheme:)
52
44
  in [:error, _message] => error
53
45
  return error
54
46
  in code
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'l43/simple_color/colorize'
4
+ module L43
5
+ module SimpleColor
6
+ class FileColorizer
7
+ include Colorize
8
+ attr_reader :extended, :fn, :reset, :stream
9
+
10
+ def colorize_file(&blk)
11
+ return stream unless blk
12
+
13
+ stream.map(&blk)
14
+ end
15
+
16
+ private
17
+ def initialize(fn, reset:, extended: false)
18
+ @extended = extended
19
+ @fn = fn
20
+ @reset = reset
21
+ @stream = (fn ? File.open(fn) : $stdin).each(chomp: true).with_index.lazy.map(&colorize_line)
22
+ end
23
+
24
+ def colorize_line
25
+ -> line, idx do
26
+ # puts("LINE: #{line}")
27
+ case colorize(line, reset:, extended:)
28
+ in :error, msg
29
+ raise BadColor, msg + "\n\tin file:#{fn || "<:stdin>"}, line #{line.inspect}:#{idx.succ})"
30
+ in colored
31
+ [colored, idx.succ]
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ def colorize_file(fn=nil, reset: true, &blk) =
38
+ FileColorizer.new(fn, reset:).colorize_file(&blk)
39
+
40
+ def xcolorize_file(fn=nil, reset: true, &blk) =
41
+ FileColorizer.new(fn, reset:, extended: true).colorize_file(&blk)
42
+ end
43
+ end
44
+ # 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.0'
5
+ VERSION = '0.2.2'
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.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
@@ -39,7 +39,9 @@ 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
44
+ - lib/l43/simple_color/file_colorizer.rb
43
45
  - lib/l43/simple_color/version.rb
44
46
  homepage: https://www.codeberg.org/lab419/l43_simple_color.git
45
47
  licenses: