hansi 0.1.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,591 @@
1
+ module Hansi
2
+ PALETTES = {}
3
+ private_constant :PALETTES
4
+
5
+ reset_css = {
6
+ color: :inherit,
7
+ font_weight: :normal,
8
+ font_syle: :normal,
9
+ text_decoration: :none,
10
+ visibility: :visible
11
+ }
12
+
13
+ PALETTES['special'] = {
14
+ reset: Hansi::Special.new(0, reset_css),
15
+ bold: Hansi::Special.new(1, font_weight: :bold),
16
+ faint: Hansi::Special.new(2, font_weight: :lighter),
17
+ italic: Hansi::Special.new(3, font_style: :italic),
18
+ underline: Hansi::Special.new(4, text_decoration: :underline),
19
+ blink: Hansi::Special.new(5, text_decoration: :blink),
20
+ rapid_blink: Hansi::Special.new(6, text_decoration: :blink),
21
+ inverse: Hansi::Special.new(7),
22
+ reverse: Hansi::Special.new(7),
23
+ conceal: Hansi::Special.new(8, visibility: :hidden),
24
+ crossed_out: Hansi::Special.new(9, text_decoration: :line_through),
25
+ default: Hansi::Special.new(10),
26
+ fraktur: Hansi::Special.new(20),
27
+ framed: Hansi::Special.new(51),
28
+ encircled: Hansi::Special.new(52),
29
+ overline: Hansi::Special.new(54, text_decoration: :overline),
30
+ }
31
+
32
+ PALETTES['ansi'] = {
33
+ "\e[30m" => Hansi[ 0, 0, 0 ],
34
+ "\e[31m" => Hansi[ 194, 54, 33 ],
35
+ "\e[32m" => Hansi[ 37, 188, 36 ],
36
+ "\e[33m" => Hansi[ 173, 173, 39 ],
37
+ "\e[34m" => Hansi[ 73, 46, 225 ],
38
+ "\e[35m" => Hansi[ 211, 56, 211 ],
39
+ "\e[36m" => Hansi[ 51, 187, 200 ],
40
+ "\e[37m" => Hansi[ 203, 204, 205 ]
41
+ }
42
+
43
+ PALETTES['xterm'] = {
44
+ "\e[90m" => Hansi[ 129, 131, 131 ],
45
+ "\e[91m" => Hansi[ 252, 57, 31 ],
46
+ "\e[92m" => Hansi[ 49, 231, 34 ],
47
+ "\e[93m" => Hansi[ 234, 236, 35 ],
48
+ "\e[94m" => Hansi[ 88, 51, 255 ],
49
+ "\e[95m" => Hansi[ 249, 53, 248 ],
50
+ "\e[96m" => Hansi[ 20, 240, 240 ],
51
+ "\e[97m" => Hansi[ 233, 235, 235 ]
52
+ }.merge(PALETTES['ansi'])
53
+
54
+ PALETTES['xterm-88color'] = {
55
+ "\e[38;5;0m" => Hansi[ 0, 0, 0 ],
56
+ "\e[38;5;1m" => Hansi[ 205, 0, 0 ],
57
+ "\e[38;5;2m" => Hansi[ 0, 205, 0 ],
58
+ "\e[38;5;3m" => Hansi[ 205, 205, 0 ],
59
+ "\e[38;5;4m" => Hansi[ 30, 144, 255 ],
60
+ "\e[38;5;5m" => Hansi[ 205, 0, 205 ],
61
+ "\e[38;5;6m" => Hansi[ 0, 205, 205 ],
62
+ "\e[38;5;7m" => Hansi[ 229, 229, 229 ],
63
+ "\e[38;5;8m" => Hansi[ 127, 127, 127 ],
64
+ "\e[38;5;9m" => Hansi[ 255, 0, 0 ],
65
+ "\e[38;5;10m" => Hansi[ 0, 255, 0 ],
66
+ "\e[38;5;11m" => Hansi[ 255, 255, 0 ],
67
+ "\e[38;5;12m" => Hansi[ 99, 184, 255 ],
68
+ "\e[38;5;13m" => Hansi[ 255, 0, 255 ],
69
+ "\e[38;5;14m" => Hansi[ 0, 255, 255 ],
70
+ "\e[38;5;15m" => Hansi[ 255, 255, 255 ],
71
+ "\e[38;5;16m" => Hansi[ 0, 0, 0 ],
72
+ "\e[38;5;17m" => Hansi[ 0, 0, 139 ],
73
+ "\e[38;5;18m" => Hansi[ 0, 0, 205 ],
74
+ "\e[38;5;19m" => Hansi[ 0, 0, 255 ],
75
+ "\e[38;5;20m" => Hansi[ 0, 139, 0 ],
76
+ "\e[38;5;21m" => Hansi[ 0, 139, 139 ],
77
+ "\e[38;5;22m" => Hansi[ 0, 139, 205 ],
78
+ "\e[38;5;23m" => Hansi[ 0, 139, 255 ],
79
+ "\e[38;5;24m" => Hansi[ 0, 205, 0 ],
80
+ "\e[38;5;25m" => Hansi[ 0, 205, 139 ],
81
+ "\e[38;5;26m" => Hansi[ 0, 205, 205 ],
82
+ "\e[38;5;27m" => Hansi[ 0, 205, 255 ],
83
+ "\e[38;5;28m" => Hansi[ 0, 255, 0 ],
84
+ "\e[38;5;29m" => Hansi[ 0, 255, 139 ],
85
+ "\e[38;5;30m" => Hansi[ 0, 255, 205 ],
86
+ "\e[38;5;31m" => Hansi[ 0, 255, 255 ],
87
+ "\e[38;5;32m" => Hansi[ 139, 0, 0 ],
88
+ "\e[38;5;33m" => Hansi[ 139, 0, 139 ],
89
+ "\e[38;5;34m" => Hansi[ 139, 0, 205 ],
90
+ "\e[38;5;35m" => Hansi[ 139, 0, 255 ],
91
+ "\e[38;5;36m" => Hansi[ 139, 139, 0 ],
92
+ "\e[38;5;37m" => Hansi[ 139, 139, 139 ],
93
+ "\e[38;5;38m" => Hansi[ 139, 139, 205 ],
94
+ "\e[38;5;39m" => Hansi[ 139, 139, 255 ],
95
+ "\e[38;5;40m" => Hansi[ 139, 205, 0 ],
96
+ "\e[38;5;41m" => Hansi[ 139, 205, 139 ],
97
+ "\e[38;5;42m" => Hansi[ 139, 205, 205 ],
98
+ "\e[38;5;43m" => Hansi[ 139, 205, 255 ],
99
+ "\e[38;5;44m" => Hansi[ 139, 255, 0 ],
100
+ "\e[38;5;45m" => Hansi[ 139, 255, 139 ],
101
+ "\e[38;5;46m" => Hansi[ 139, 255, 205 ],
102
+ "\e[38;5;47m" => Hansi[ 139, 255, 255 ],
103
+ "\e[38;5;48m" => Hansi[ 205, 0, 0 ],
104
+ "\e[38;5;49m" => Hansi[ 205, 0, 139 ],
105
+ "\e[38;5;50m" => Hansi[ 205, 0, 205 ],
106
+ "\e[38;5;51m" => Hansi[ 205, 0, 255 ],
107
+ "\e[38;5;52m" => Hansi[ 205, 139, 0 ],
108
+ "\e[38;5;53m" => Hansi[ 205, 139, 139 ],
109
+ "\e[38;5;54m" => Hansi[ 205, 139, 205 ],
110
+ "\e[38;5;55m" => Hansi[ 205, 139, 255 ],
111
+ "\e[38;5;56m" => Hansi[ 205, 205, 0 ],
112
+ "\e[38;5;57m" => Hansi[ 205, 205, 139 ],
113
+ "\e[38;5;58m" => Hansi[ 205, 205, 205 ],
114
+ "\e[38;5;59m" => Hansi[ 205, 205, 255 ],
115
+ "\e[38;5;60m" => Hansi[ 205, 255, 0 ],
116
+ "\e[38;5;61m" => Hansi[ 205, 255, 139 ],
117
+ "\e[38;5;62m" => Hansi[ 205, 255, 205 ],
118
+ "\e[38;5;63m" => Hansi[ 205, 255, 255 ],
119
+ "\e[38;5;64m" => Hansi[ 255, 0, 0 ],
120
+ "\e[38;5;65m" => Hansi[ 255, 0, 139 ],
121
+ "\e[38;5;66m" => Hansi[ 255, 0, 205 ],
122
+ "\e[38;5;67m" => Hansi[ 255, 0, 255 ],
123
+ "\e[38;5;68m" => Hansi[ 255, 139, 0 ],
124
+ "\e[38;5;69m" => Hansi[ 255, 139, 139 ],
125
+ "\e[38;5;70m" => Hansi[ 255, 139, 205 ],
126
+ "\e[38;5;71m" => Hansi[ 255, 139, 255 ],
127
+ "\e[38;5;72m" => Hansi[ 255, 205, 0 ],
128
+ "\e[38;5;73m" => Hansi[ 255, 205, 139 ],
129
+ "\e[38;5;74m" => Hansi[ 255, 205, 205 ],
130
+ "\e[38;5;75m" => Hansi[ 255, 205, 255 ],
131
+ "\e[38;5;76m" => Hansi[ 255, 255, 0 ],
132
+ "\e[38;5;77m" => Hansi[ 255, 255, 139 ],
133
+ "\e[38;5;78m" => Hansi[ 255, 255, 205 ],
134
+ "\e[38;5;79m" => Hansi[ 255, 255, 255 ],
135
+ "\e[38;5;80m" => Hansi[ 46, 46, 46 ],
136
+ "\e[38;5;81m" => Hansi[ 92, 92, 92 ],
137
+ "\e[38;5;82m" => Hansi[ 113, 113, 113 ],
138
+ "\e[38;5;83m" => Hansi[ 139, 139, 139 ],
139
+ "\e[38;5;84m" => Hansi[ 162, 162, 162 ],
140
+ "\e[38;5;85m" => Hansi[ 185, 185, 185 ],
141
+ "\e[38;5;86m" => Hansi[ 208, 208, 208 ],
142
+ "\e[38;5;87m" => Hansi[ 231, 231, 231 ]
143
+ }
144
+
145
+ PALETTES['xterm-256color'] = {
146
+ "\e[38;5;0m" => Hansi["000000"],
147
+ "\e[38;5;1m" => Hansi["800000"],
148
+ "\e[38;5;2m" => Hansi["008000"],
149
+ "\e[38;5;3m" => Hansi["808000"],
150
+ "\e[38;5;4m" => Hansi["000080"],
151
+ "\e[38;5;5m" => Hansi["800080"],
152
+ "\e[38;5;6m" => Hansi["008080"],
153
+ "\e[38;5;7m" => Hansi["c0c0c0"],
154
+ "\e[38;5;8m" => Hansi["808080"],
155
+ "\e[38;5;9m" => Hansi["ff0000"],
156
+ "\e[38;5;10m" => Hansi["00ff00"],
157
+ "\e[38;5;11m" => Hansi["ffff00"],
158
+ "\e[38;5;12m" => Hansi["0000ff"],
159
+ "\e[38;5;13m" => Hansi["ff00ff"],
160
+ "\e[38;5;14m" => Hansi["00ffff"],
161
+ "\e[38;5;15m" => Hansi["ffffff"],
162
+ "\e[38;5;16m" => Hansi["000000"],
163
+ "\e[38;5;17m" => Hansi["00005f"],
164
+ "\e[38;5;18m" => Hansi["000087"],
165
+ "\e[38;5;19m" => Hansi["0000af"],
166
+ "\e[38;5;20m" => Hansi["0000d7"],
167
+ "\e[38;5;21m" => Hansi["0000ff"],
168
+ "\e[38;5;22m" => Hansi["005f00"],
169
+ "\e[38;5;23m" => Hansi["005f5f"],
170
+ "\e[38;5;24m" => Hansi["005f87"],
171
+ "\e[38;5;25m" => Hansi["005faf"],
172
+ "\e[38;5;26m" => Hansi["005fd7"],
173
+ "\e[38;5;27m" => Hansi["005fff"],
174
+ "\e[38;5;28m" => Hansi["008700"],
175
+ "\e[38;5;29m" => Hansi["00875f"],
176
+ "\e[38;5;30m" => Hansi["008787"],
177
+ "\e[38;5;31m" => Hansi["0087af"],
178
+ "\e[38;5;32m" => Hansi["0087d7"],
179
+ "\e[38;5;33m" => Hansi["0087ff"],
180
+ "\e[38;5;34m" => Hansi["00af00"],
181
+ "\e[38;5;35m" => Hansi["00af5f"],
182
+ "\e[38;5;36m" => Hansi["00af87"],
183
+ "\e[38;5;37m" => Hansi["00afaf"],
184
+ "\e[38;5;38m" => Hansi["00afd7"],
185
+ "\e[38;5;39m" => Hansi["00afff"],
186
+ "\e[38;5;40m" => Hansi["00d700"],
187
+ "\e[38;5;41m" => Hansi["00d75f"],
188
+ "\e[38;5;42m" => Hansi["00d787"],
189
+ "\e[38;5;43m" => Hansi["00d7af"],
190
+ "\e[38;5;44m" => Hansi["00d7d7"],
191
+ "\e[38;5;45m" => Hansi["00d7ff"],
192
+ "\e[38;5;46m" => Hansi["00ff00"],
193
+ "\e[38;5;47m" => Hansi["00ff5f"],
194
+ "\e[38;5;48m" => Hansi["00ff87"],
195
+ "\e[38;5;49m" => Hansi["00ffaf"],
196
+ "\e[38;5;50m" => Hansi["00ffd7"],
197
+ "\e[38;5;51m" => Hansi["00ffff"],
198
+ "\e[38;5;52m" => Hansi["5f0000"],
199
+ "\e[38;5;53m" => Hansi["5f005f"],
200
+ "\e[38;5;54m" => Hansi["5f0087"],
201
+ "\e[38;5;55m" => Hansi["5f00af"],
202
+ "\e[38;5;56m" => Hansi["5f00d7"],
203
+ "\e[38;5;57m" => Hansi["5f00ff"],
204
+ "\e[38;5;58m" => Hansi["5f5f00"],
205
+ "\e[38;5;59m" => Hansi["5f5f5f"],
206
+ "\e[38;5;60m" => Hansi["5f5f87"],
207
+ "\e[38;5;61m" => Hansi["5f5faf"],
208
+ "\e[38;5;62m" => Hansi["5f5fd7"],
209
+ "\e[38;5;63m" => Hansi["5f5fff"],
210
+ "\e[38;5;64m" => Hansi["5f8700"],
211
+ "\e[38;5;65m" => Hansi["5f875f"],
212
+ "\e[38;5;66m" => Hansi["5f8787"],
213
+ "\e[38;5;67m" => Hansi["5f87af"],
214
+ "\e[38;5;68m" => Hansi["5f87d7"],
215
+ "\e[38;5;69m" => Hansi["5f87ff"],
216
+ "\e[38;5;70m" => Hansi["5faf00"],
217
+ "\e[38;5;71m" => Hansi["5faf5f"],
218
+ "\e[38;5;72m" => Hansi["5faf87"],
219
+ "\e[38;5;73m" => Hansi["5fafaf"],
220
+ "\e[38;5;74m" => Hansi["5fafd7"],
221
+ "\e[38;5;75m" => Hansi["5fafff"],
222
+ "\e[38;5;76m" => Hansi["5fd700"],
223
+ "\e[38;5;77m" => Hansi["5fd75f"],
224
+ "\e[38;5;78m" => Hansi["5fd787"],
225
+ "\e[38;5;79m" => Hansi["5fd7af"],
226
+ "\e[38;5;80m" => Hansi["5fd7d7"],
227
+ "\e[38;5;81m" => Hansi["5fd7ff"],
228
+ "\e[38;5;82m" => Hansi["5fff00"],
229
+ "\e[38;5;83m" => Hansi["5fff5f"],
230
+ "\e[38;5;84m" => Hansi["5fff87"],
231
+ "\e[38;5;85m" => Hansi["5fffaf"],
232
+ "\e[38;5;86m" => Hansi["5fffd7"],
233
+ "\e[38;5;87m" => Hansi["5fffff"],
234
+ "\e[38;5;88m" => Hansi["870000"],
235
+ "\e[38;5;89m" => Hansi["87005f"],
236
+ "\e[38;5;90m" => Hansi["870087"],
237
+ "\e[38;5;91m" => Hansi["8700af"],
238
+ "\e[38;5;92m" => Hansi["8700d7"],
239
+ "\e[38;5;93m" => Hansi["8700ff"],
240
+ "\e[38;5;94m" => Hansi["875f00"],
241
+ "\e[38;5;95m" => Hansi["875f5f"],
242
+ "\e[38;5;96m" => Hansi["875f87"],
243
+ "\e[38;5;97m" => Hansi["875faf"],
244
+ "\e[38;5;98m" => Hansi["875fd7"],
245
+ "\e[38;5;99m" => Hansi["875fff"],
246
+ "\e[38;5;100m" => Hansi["878700"],
247
+ "\e[38;5;101m" => Hansi["87875f"],
248
+ "\e[38;5;102m" => Hansi["878787"],
249
+ "\e[38;5;103m" => Hansi["8787af"],
250
+ "\e[38;5;104m" => Hansi["8787d7"],
251
+ "\e[38;5;105m" => Hansi["8787ff"],
252
+ "\e[38;5;106m" => Hansi["87af00"],
253
+ "\e[38;5;107m" => Hansi["87af5f"],
254
+ "\e[38;5;108m" => Hansi["87af87"],
255
+ "\e[38;5;109m" => Hansi["87afaf"],
256
+ "\e[38;5;110m" => Hansi["87afd7"],
257
+ "\e[38;5;111m" => Hansi["87afff"],
258
+ "\e[38;5;112m" => Hansi["87d700"],
259
+ "\e[38;5;113m" => Hansi["87d75f"],
260
+ "\e[38;5;114m" => Hansi["87d787"],
261
+ "\e[38;5;115m" => Hansi["87d7af"],
262
+ "\e[38;5;116m" => Hansi["87d7d7"],
263
+ "\e[38;5;117m" => Hansi["87d7ff"],
264
+ "\e[38;5;118m" => Hansi["87ff00"],
265
+ "\e[38;5;119m" => Hansi["87ff5f"],
266
+ "\e[38;5;120m" => Hansi["87ff87"],
267
+ "\e[38;5;121m" => Hansi["87ffaf"],
268
+ "\e[38;5;122m" => Hansi["87ffd7"],
269
+ "\e[38;5;123m" => Hansi["87ffff"],
270
+ "\e[38;5;124m" => Hansi["af0000"],
271
+ "\e[38;5;125m" => Hansi["af005f"],
272
+ "\e[38;5;126m" => Hansi["af0087"],
273
+ "\e[38;5;127m" => Hansi["af00af"],
274
+ "\e[38;5;128m" => Hansi["af00d7"],
275
+ "\e[38;5;129m" => Hansi["af00ff"],
276
+ "\e[38;5;130m" => Hansi["af5f00"],
277
+ "\e[38;5;131m" => Hansi["af5f5f"],
278
+ "\e[38;5;132m" => Hansi["af5f87"],
279
+ "\e[38;5;133m" => Hansi["af5faf"],
280
+ "\e[38;5;134m" => Hansi["af5fd7"],
281
+ "\e[38;5;135m" => Hansi["af5fff"],
282
+ "\e[38;5;136m" => Hansi["af8700"],
283
+ "\e[38;5;137m" => Hansi["af875f"],
284
+ "\e[38;5;138m" => Hansi["af8787"],
285
+ "\e[38;5;139m" => Hansi["af87af"],
286
+ "\e[38;5;140m" => Hansi["af87d7"],
287
+ "\e[38;5;141m" => Hansi["af87ff"],
288
+ "\e[38;5;142m" => Hansi["afaf00"],
289
+ "\e[38;5;143m" => Hansi["afaf5f"],
290
+ "\e[38;5;144m" => Hansi["afaf87"],
291
+ "\e[38;5;145m" => Hansi["afafaf"],
292
+ "\e[38;5;146m" => Hansi["afafd7"],
293
+ "\e[38;5;147m" => Hansi["afafff"],
294
+ "\e[38;5;148m" => Hansi["afd700"],
295
+ "\e[38;5;149m" => Hansi["afd75f"],
296
+ "\e[38;5;150m" => Hansi["afd787"],
297
+ "\e[38;5;151m" => Hansi["afd7af"],
298
+ "\e[38;5;152m" => Hansi["afd7d7"],
299
+ "\e[38;5;153m" => Hansi["afd7ff"],
300
+ "\e[38;5;154m" => Hansi["afff00"],
301
+ "\e[38;5;155m" => Hansi["afff5f"],
302
+ "\e[38;5;156m" => Hansi["afff87"],
303
+ "\e[38;5;157m" => Hansi["afffaf"],
304
+ "\e[38;5;158m" => Hansi["afffd7"],
305
+ "\e[38;5;159m" => Hansi["afffff"],
306
+ "\e[38;5;160m" => Hansi["d70000"],
307
+ "\e[38;5;161m" => Hansi["d7005f"],
308
+ "\e[38;5;162m" => Hansi["d70087"],
309
+ "\e[38;5;163m" => Hansi["d700af"],
310
+ "\e[38;5;164m" => Hansi["d700d7"],
311
+ "\e[38;5;165m" => Hansi["d700ff"],
312
+ "\e[38;5;166m" => Hansi["d75f00"],
313
+ "\e[38;5;167m" => Hansi["d75f5f"],
314
+ "\e[38;5;168m" => Hansi["d75f87"],
315
+ "\e[38;5;169m" => Hansi["d75faf"],
316
+ "\e[38;5;170m" => Hansi["d75fd7"],
317
+ "\e[38;5;171m" => Hansi["d75fff"],
318
+ "\e[38;5;172m" => Hansi["d78700"],
319
+ "\e[38;5;173m" => Hansi["d7875f"],
320
+ "\e[38;5;174m" => Hansi["d78787"],
321
+ "\e[38;5;175m" => Hansi["d787af"],
322
+ "\e[38;5;176m" => Hansi["d787d7"],
323
+ "\e[38;5;177m" => Hansi["d787ff"],
324
+ "\e[38;5;178m" => Hansi["dfaf00"],
325
+ "\e[38;5;179m" => Hansi["dfaf5f"],
326
+ "\e[38;5;180m" => Hansi["dfaf87"],
327
+ "\e[38;5;181m" => Hansi["dfafaf"],
328
+ "\e[38;5;182m" => Hansi["dfafdf"],
329
+ "\e[38;5;183m" => Hansi["dfafff"],
330
+ "\e[38;5;184m" => Hansi["dfdf00"],
331
+ "\e[38;5;185m" => Hansi["dfdf5f"],
332
+ "\e[38;5;186m" => Hansi["dfdf87"],
333
+ "\e[38;5;187m" => Hansi["dfdfaf"],
334
+ "\e[38;5;188m" => Hansi["dfdfdf"],
335
+ "\e[38;5;189m" => Hansi["dfdfff"],
336
+ "\e[38;5;190m" => Hansi["dfff00"],
337
+ "\e[38;5;191m" => Hansi["dfff5f"],
338
+ "\e[38;5;192m" => Hansi["dfff87"],
339
+ "\e[38;5;193m" => Hansi["dfffaf"],
340
+ "\e[38;5;194m" => Hansi["dfffdf"],
341
+ "\e[38;5;195m" => Hansi["dfffff"],
342
+ "\e[38;5;196m" => Hansi["ff0000"],
343
+ "\e[38;5;197m" => Hansi["ff005f"],
344
+ "\e[38;5;198m" => Hansi["ff0087"],
345
+ "\e[38;5;199m" => Hansi["ff00af"],
346
+ "\e[38;5;200m" => Hansi["ff00df"],
347
+ "\e[38;5;201m" => Hansi["ff00ff"],
348
+ "\e[38;5;202m" => Hansi["ff5f00"],
349
+ "\e[38;5;203m" => Hansi["ff5f5f"],
350
+ "\e[38;5;204m" => Hansi["ff5f87"],
351
+ "\e[38;5;205m" => Hansi["ff5faf"],
352
+ "\e[38;5;206m" => Hansi["ff5fdf"],
353
+ "\e[38;5;207m" => Hansi["ff5fff"],
354
+ "\e[38;5;208m" => Hansi["ff8700"],
355
+ "\e[38;5;209m" => Hansi["ff875f"],
356
+ "\e[38;5;210m" => Hansi["ff8787"],
357
+ "\e[38;5;211m" => Hansi["ff87af"],
358
+ "\e[38;5;212m" => Hansi["ff87df"],
359
+ "\e[38;5;213m" => Hansi["ff87ff"],
360
+ "\e[38;5;214m" => Hansi["ffaf00"],
361
+ "\e[38;5;215m" => Hansi["ffaf5f"],
362
+ "\e[38;5;216m" => Hansi["ffaf87"],
363
+ "\e[38;5;217m" => Hansi["ffafaf"],
364
+ "\e[38;5;218m" => Hansi["ffafdf"],
365
+ "\e[38;5;219m" => Hansi["ffafff"],
366
+ "\e[38;5;220m" => Hansi["ffdf00"],
367
+ "\e[38;5;221m" => Hansi["ffdf5f"],
368
+ "\e[38;5;222m" => Hansi["ffdf87"],
369
+ "\e[38;5;223m" => Hansi["ffdfaf"],
370
+ "\e[38;5;224m" => Hansi["ffdfdf"],
371
+ "\e[38;5;225m" => Hansi["ffdfff"],
372
+ "\e[38;5;226m" => Hansi["ffff00"],
373
+ "\e[38;5;227m" => Hansi["ffff5f"],
374
+ "\e[38;5;228m" => Hansi["ffff87"],
375
+ "\e[38;5;229m" => Hansi["ffffaf"],
376
+ "\e[38;5;230m" => Hansi["ffffdf"],
377
+ "\e[38;5;231m" => Hansi["ffffff"],
378
+ "\e[38;5;232m" => Hansi["080808"],
379
+ "\e[38;5;233m" => Hansi["121212"],
380
+ "\e[38;5;234m" => Hansi["1c1c1c"],
381
+ "\e[38;5;235m" => Hansi["262626"],
382
+ "\e[38;5;236m" => Hansi["303030"],
383
+ "\e[38;5;237m" => Hansi["3a3a3a"],
384
+ "\e[38;5;238m" => Hansi["444444"],
385
+ "\e[38;5;239m" => Hansi["4e4e4e"],
386
+ "\e[38;5;240m" => Hansi["585858"],
387
+ "\e[38;5;241m" => Hansi["626262"],
388
+ "\e[38;5;242m" => Hansi["6c6c6c"],
389
+ "\e[38;5;243m" => Hansi["767676"],
390
+ "\e[38;5;244m" => Hansi["808080"],
391
+ "\e[38;5;245m" => Hansi["8a8a8a"],
392
+ "\e[38;5;246m" => Hansi["949494"],
393
+ "\e[38;5;247m" => Hansi["9e9e9e"],
394
+ "\e[38;5;248m" => Hansi["a8a8a8"],
395
+ "\e[38;5;249m" => Hansi["b2b2b2"],
396
+ "\e[38;5;250m" => Hansi["bcbcbc"],
397
+ "\e[38;5;251m" => Hansi["c6c6c6"],
398
+ "\e[38;5;252m" => Hansi["d0d0d0"],
399
+ "\e[38;5;253m" => Hansi["dadada"],
400
+ "\e[38;5;254m" => Hansi["e4e4e4"],
401
+ "\e[38;5;255m" => Hansi["eeeeee"]
402
+ }
403
+
404
+ PALETTES['web'] = {
405
+ aliceblue: Hansi["f0f8ff"],
406
+ aluminum: Hansi["999999"],
407
+ antiquewhite: Hansi["faebd7"],
408
+ aqua: Hansi["00ffff"],
409
+ aquamarine: Hansi["7fffd4"],
410
+ azure: Hansi["f0ffff"],
411
+ beccapurple: Hansi["663399"],
412
+ beige: Hansi["f5f5dc"],
413
+ bisque: Hansi["ffe4c4"],
414
+ black: Hansi["000000"],
415
+ blanchedalmond: Hansi["ffebcd"],
416
+ blue: Hansi["0000ff"],
417
+ blueviolet: Hansi["8a2be2"],
418
+ brown: Hansi["a52a2a"],
419
+ burlywood: Hansi["deb887"],
420
+ cadetblue: Hansi["5f9ea0"],
421
+ carnation: Hansi["ff5ed0"],
422
+ cayenne: Hansi["8d0000"],
423
+ chartreuse: Hansi["7fff00"],
424
+ chocolate: Hansi["d2691e"],
425
+ coolcopper: Hansi["d98719"],
426
+ copper: Hansi["b87333"],
427
+ coral: Hansi["ff7f50"],
428
+ cornflowerblue: Hansi["6495ed"],
429
+ cornsilk: Hansi["fff8dc"],
430
+ crimson: Hansi["dc143c"],
431
+ cyan: Hansi["00ffff"],
432
+ darkblue: Hansi["00008b"],
433
+ darkcyan: Hansi["008b8b"],
434
+ darkgoldenrod: Hansi["b8860b"],
435
+ darkgray: Hansi["a9a9a9"],
436
+ darkgreen: Hansi["006400"],
437
+ darkgrey: Hansi["a9a9a9"],
438
+ darkkhaki: Hansi["bdb76b"],
439
+ darkmagenta: Hansi["8b008b"],
440
+ darkolivegreen: Hansi["556b2f"],
441
+ darkorange: Hansi["ff8c00"],
442
+ darkorchid: Hansi["9932cc"],
443
+ darkred: Hansi["8b0000"],
444
+ darksalmon: Hansi["e9967a"],
445
+ darkseagreen: Hansi["8fbc8f"],
446
+ darkslateblue: Hansi["483d8b"],
447
+ darkslategray: Hansi["2f4f4f"],
448
+ darkslategrey: Hansi["2f4f4f"],
449
+ darkturquoise: Hansi["00ced1"],
450
+ darkviolet: Hansi["9400d3"],
451
+ deeppink: Hansi["ff1493"],
452
+ deepskyblue: Hansi["00bfbf"],
453
+ dimgray: Hansi["696969"],
454
+ dimgrey: Hansi["696969"],
455
+ dodgerblue: Hansi["1e90ff"],
456
+ feldspar: Hansi["d19275"],
457
+ firebrick: Hansi["b22222"],
458
+ floralwhite: Hansi["fffaf0"],
459
+ forestgreen: Hansi["228b22"],
460
+ fuchsia: Hansi["ff00ff"],
461
+ gainsboro: Hansi["dcdcdc"],
462
+ ghostwhite: Hansi["f8f8ff"],
463
+ gold: Hansi["ffd700"],
464
+ goldenrod: Hansi["daa520"],
465
+ gray: Hansi["808080"],
466
+ gray10: Hansi["1a1a1a"],
467
+ gray20: Hansi["333333"],
468
+ gray30: Hansi["4d4d4d"],
469
+ gray40: Hansi["666666"],
470
+ gray50: Hansi["808080"],
471
+ gray60: Hansi["999999"],
472
+ gray70: Hansi["b3b3b3"],
473
+ gray80: Hansi["cccccc"],
474
+ gray90: Hansi["e6e6e6"],
475
+ green: Hansi["008000"],
476
+ greenyellow: Hansi["adff2f"],
477
+ grey: Hansi["808080"],
478
+ grey10: Hansi["1a1a1a"],
479
+ grey20: Hansi["333333"],
480
+ grey30: Hansi["4d4d4d"],
481
+ grey40: Hansi["666666"],
482
+ grey50: Hansi["808080"],
483
+ grey60: Hansi["999999"],
484
+ grey70: Hansi["b3b3b3"],
485
+ grey80: Hansi["cccccc"],
486
+ grey90: Hansi["e6e6e6"],
487
+ honeydew: Hansi["f0fff0"],
488
+ hotpink: Hansi["ff69b4"],
489
+ indianred: Hansi["cd5c5c"],
490
+ indigo: Hansi["4b0082"],
491
+ iron: Hansi["4c4c4c"],
492
+ ivory: Hansi["fffff0"],
493
+ khaki: Hansi["f0e68c"],
494
+ lavender: Hansi["e6e6fa"],
495
+ lavenderblush: Hansi["fff0f5"],
496
+ lawngreen: Hansi["7cfc00"],
497
+ lead: Hansi["191919"],
498
+ lemonchiffon: Hansi["fffacd"],
499
+ lightblue: Hansi["add8e6"],
500
+ lightcoral: Hansi["f08080"],
501
+ lightcyan: Hansi["e0ffff"],
502
+ lightgoldenrodyellow: Hansi["fafad2"],
503
+ lightgray: Hansi["d3d3d3"],
504
+ lightgreen: Hansi["90ee90"],
505
+ lightgrey: Hansi["d3d3d3"],
506
+ lightpink: Hansi["ffb6c1"],
507
+ lightsalmon: Hansi["ffa07a"],
508
+ lightseagreen: Hansi["20b2aa"],
509
+ lightskyblue: Hansi["87cefa"],
510
+ lightslateblue: Hansi["8470ff"],
511
+ lightslategray: Hansi["778899"],
512
+ lightslategrey: Hansi["778899"],
513
+ lightsteelblue: Hansi["b0c4de"],
514
+ lightyellow: Hansi["ffffe0"],
515
+ lime: Hansi["00ff00"],
516
+ limegreen: Hansi["32cd32"],
517
+ linen: Hansi["faf0e6"],
518
+ magenta: Hansi["ff00ff"],
519
+ magnesium: Hansi["b3b3b3"],
520
+ maroon: Hansi["800000"],
521
+ mediumaquamarine: Hansi["66cdaa"],
522
+ mediumblue: Hansi["0000cd"],
523
+ mediumorchid: Hansi["ba55d3"],
524
+ mediumpurple: Hansi["9370db"],
525
+ mediumseagreen: Hansi["3cb371"],
526
+ mediumslateblue: Hansi["7b68ee"],
527
+ mediumspringgreen: Hansi["00fa9a"],
528
+ mediumturquoise: Hansi["48d1cc"],
529
+ mediumvioletred: Hansi["c71585"],
530
+ mercury: Hansi["e6e6e6"],
531
+ midnightblue: Hansi["191970"],
532
+ mintcream: Hansi["f5fffa"],
533
+ mistyrose: Hansi["ffe4e1"],
534
+ moccasin: Hansi["ffe4b5"],
535
+ navajowhite: Hansi["ffdead"],
536
+ navy: Hansi["000080"],
537
+ nickel: Hansi["808080"],
538
+ oldlace: Hansi["fdf5e6"],
539
+ olive: Hansi["808000"],
540
+ olivedrab: Hansi["6b8e23"],
541
+ orange: Hansi["ffa500"],
542
+ orangered: Hansi["ff4500"],
543
+ orchid: Hansi["da70d6"],
544
+ palegoldenrod: Hansi["eee8aa"],
545
+ palegreen: Hansi["98fb98"],
546
+ paleturquoise: Hansi["afeeee"],
547
+ palevioletred: Hansi["db7093"],
548
+ papayawhip: Hansi["ffefd5"],
549
+ peachpuff: Hansi["ffdab9"],
550
+ peru: Hansi["cd853f"],
551
+ pink: Hansi["ffc0cb"],
552
+ plum: Hansi["dda0dd"],
553
+ poly: Hansi["600000"],
554
+ polysilicon: Hansi["600000"],
555
+ powderblue: Hansi["b0e0e6"],
556
+ purple: Hansi["800080"],
557
+ rebeccapurple: Hansi["663399"],
558
+ red: Hansi["ff0000"],
559
+ rosybrown: Hansi["bc8f8f"],
560
+ royalblue: Hansi["4169e1"],
561
+ saddlebrown: Hansi["8b4513"],
562
+ salmon: Hansi["fa8072"],
563
+ sandybrown: Hansi["f4a460"],
564
+ seagreen: Hansi["2e8b57"],
565
+ seashell: Hansi["fff5ee"],
566
+ sienna: Hansi["a0522d"],
567
+ silver: Hansi["cccccc"],
568
+ skyblue: Hansi["87ceeb"],
569
+ slateblue: Hansi["6a5acd"],
570
+ slategray: Hansi["708090"],
571
+ slategrey: Hansi["708090"],
572
+ snow: Hansi["fffafa"],
573
+ springgreen: Hansi["00ff7f"],
574
+ steel: Hansi["666666"],
575
+ steelblue: Hansi["4682b4"],
576
+ tan: Hansi["d2b48c"],
577
+ teal: Hansi["008080"],
578
+ thistle: Hansi["d8bfd8"],
579
+ tin: Hansi["7f7f7f"],
580
+ tomato: Hansi["ff6347"],
581
+ tungsten: Hansi["333333"],
582
+ turquoise: Hansi["40e0d0"],
583
+ violet: Hansi["ee82ee"],
584
+ violetred: Hansi["d02090"],
585
+ wheat: Hansi["f5deb3"],
586
+ white: Hansi["ffffff"],
587
+ whitesmoke: Hansi["f5f5f5"],
588
+ yellow: Hansi["ffff00"],
589
+ yellowgreen: Hansi["9acd32"]
590
+ }
591
+ end
@@ -0,0 +1,27 @@
1
+ require 'strscan'
2
+
3
+ module Hansi
4
+ class SexpRenderer
5
+ def self.render(*args, **options)
6
+ new(**options).render(args)
7
+ end
8
+
9
+ def initialize(theme: :default, mode: Hansi.mode, join: "")
10
+ @theme = Theme[theme]
11
+ @mode = mode
12
+ @join = join
13
+ end
14
+
15
+ def render(input, codes: nil)
16
+ return "#{codes}#{input}#{Hansi.reset}" unless input.respond_to? :to_ary and sexp = input.to_ary
17
+ return render(sexp.first) if sexp.size < 2
18
+
19
+ style, *content = sexp
20
+ codes ||= Hansi.reset
21
+ style &&= @theme[style]
22
+ codes += style.to_ansi(mode: @mode).to_s if style
23
+
24
+ content.map { |e| render(e, codes: codes) }.join(@join)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,25 @@
1
+ module Hansi
2
+ class Special < AnsiCode
3
+ def initialize(ansi, css = nil)
4
+ ansi = "\e[#{ansi}m" unless ansi.is_a? String and ansi.start_with? "\e"
5
+ css = css.map { |a| a.map { |v| Symbol === v ? v.to_s.tr('_','-') : v.to_s }.join(': ') } if css.is_a? Hash
6
+ css = css.join("; ") if css.is_a? Array
7
+ css = css + ";" if css and not css.end_with? ";"
8
+ @ansi = ansi
9
+ @css = css
10
+ end
11
+
12
+ def to_css_rule
13
+ @css || super
14
+ end
15
+
16
+ def to_ansi(mode: Hansi.mode, **options)
17
+ mode &&= mode[/\d+/].to_i unless mode.is_a? Integer
18
+ @ansi if mode > 1
19
+ end
20
+
21
+ def inspect
22
+ "<%p:%p>" % [self.class, @ansi]
23
+ end
24
+ end
25
+ end