pry-theme 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/.gitignore +1 -0
- data/.travis.yml +8 -1
- data/CHANGELOG.md +40 -0
- data/Gemfile +1 -1
- data/README.md +26 -48
- data/Rakefile +10 -1
- data/VERSION +1 -0
- data/lib/pry-theme/basic_editor.rb +116 -0
- data/lib/pry-theme/color.rb +431 -0
- data/lib/pry-theme/color_table.rb +39 -0
- data/lib/pry-theme/colors/color16.rb +35 -0
- data/lib/pry-theme/colors/color256.rb +30 -0
- data/lib/pry-theme/colors/color8.rb +31 -0
- data/lib/pry-theme/commands.rb +237 -275
- data/lib/pry-theme/declaration.rb +120 -0
- data/lib/pry-theme/definition.rb +111 -0
- data/lib/pry-theme/formattable.rb +26 -0
- data/lib/pry-theme/hex.rb +76 -0
- data/lib/pry-theme/preview.rb +74 -0
- data/lib/pry-theme/rgb.rb +238 -13
- data/lib/pry-theme/term.rb +66 -0
- data/lib/pry-theme/theme.rb +116 -26
- data/lib/pry-theme/theme_list.rb +52 -0
- data/lib/pry-theme/when_started_hook.rb +25 -27
- data/lib/pry-theme.rb +84 -158
- data/pry-theme.gemspec +14 -18
- data/spec/color_table.rb +53 -0
- data/spec/colors/color16_spec.rb +255 -0
- data/spec/colors/color256_spec.rb +323 -0
- data/spec/colors/color8_spec.rb +254 -0
- data/spec/commands_spec.rb +203 -0
- data/spec/helper.rb +16 -0
- data/spec/hex_spec.rb +52 -0
- data/spec/rgb_spec.rb +81 -0
- data/spec/term_spec.rb +23 -0
- data/spec/theme_spec.rb +486 -0
- data/themes/github.prytheme.rb +49 -0
- data/themes/monokai.prytheme.rb +48 -0
- data/themes/pry-classic-16.prytheme.rb +48 -0
- data/themes/pry-classic-256.prytheme.rb +48 -0
- data/themes/pry-classic-8.prytheme.rb +48 -0
- data/themes/pry-cold.prytheme.rb +49 -0
- data/themes/pry-love-16.prytheme.rb +48 -0
- data/themes/pry-love-8.prytheme.rb +48 -0
- data/themes/pry-modern-16.prytheme.rb +48 -0
- data/themes/pry-modern-256.prytheme.rb +48 -0
- data/themes/pry-modern-8.prytheme.rb +48 -0
- data/themes/pry-monochrome.prytheme.rb +32 -0
- data/themes/pry-siberia-16.prytheme.rb +48 -0
- data/themes/pry-siberia-8.prytheme.rb +48 -0
- data/themes/pry-tepid-16.prytheme.rb +48 -0
- data/themes/pry-tepid-8.prytheme.rb +48 -0
- data/themes/pry-zealand-16.prytheme.rb +48 -0
- data/themes/pry-zealand-8.prytheme.rb +49 -0
- data/themes/railscasts.prytheme.rb +50 -0
- data/themes/solarized.prytheme.rb +48 -0
- data/themes/tomorrow.prytheme.rb +48 -0
- data/themes/twilight.prytheme.rb +48 -0
- data/themes/vim-default.prytheme.rb +50 -0
- data/themes/vim-detailed.prytheme.rb +50 -0
- data/themes/zenburn.prytheme.rb +48 -0
- metadata +56 -41
- data/lib/pry-theme/color_converter.rb +0 -55
- data/lib/pry-theme/helper.rb +0 -87
- data/lib/pry-theme/palette.rb +0 -85
- data/lib/pry-theme/term_notation.rb +0 -17
- data/lib/pry-theme/version.rb +0 -3
- data/test/fixtures/pry-classic.prytheme +0 -38
- data/test/helper.rb +0 -56
- data/test/test_color_converter.rb +0 -38
- data/test/test_commands.rb +0 -55
- data/test/test_helper.rb +0 -45
- data/test/test_palette.rb +0 -11
- data/themes/github.prytheme +0 -43
- data/themes/monokai.prytheme +0 -42
- data/themes/pry-classic.prytheme +0 -43
- data/themes/pry-cold.prytheme +0 -43
- data/themes/pry-modern.prytheme +0 -42
- data/themes/railscasts.prytheme +0 -44
- data/themes/saturday.prytheme +0 -42
- data/themes/solarized.prytheme +0 -43
- data/themes/tomorrow.prytheme +0 -43
- data/themes/twilight.prytheme +0 -42
- data/themes/vim-default.prytheme +0 -42
- data/themes/vim-detailed.prytheme +0 -42
- data/themes/zenburn.prytheme +0 -43
@@ -0,0 +1,431 @@
|
|
1
|
+
module PryTheme
|
2
|
+
class Color
|
3
|
+
|
4
|
+
# Stores all possible colours for foregrounds and backgrounds, for 256, 16
|
5
|
+
# and 8 colour palettes.
|
6
|
+
@@colors = {
|
7
|
+
:foreground => {
|
8
|
+
256 => {
|
9
|
+
'black' => [0, 16],
|
10
|
+
'maroon' => 1,
|
11
|
+
'toad_in_love' => 2,
|
12
|
+
'olive' => 3,
|
13
|
+
'navy_blue' => 4,
|
14
|
+
'violet_eggplant' => 5,
|
15
|
+
'teal' => 6,
|
16
|
+
'silver' => 7,
|
17
|
+
'gray' => [8, 244],
|
18
|
+
'red' => [9, 196],
|
19
|
+
'green' => [10, 46],
|
20
|
+
'yellow' => [11, 226],
|
21
|
+
'blue' => [12, 21],
|
22
|
+
'magenta' => [13, 201],
|
23
|
+
'cyan' => [14, 51],
|
24
|
+
'white' => [15, 231],
|
25
|
+
'dark_indigo' => 17,
|
26
|
+
'ultramarine01' => 18,
|
27
|
+
'ultramarine02' => 19,
|
28
|
+
'persian_blue01' => 20,
|
29
|
+
'dark_spring_green' => 22,
|
30
|
+
'dark_turquoise' => 23,
|
31
|
+
'cerulean_grey01' => 24,
|
32
|
+
'denim01' => 25,
|
33
|
+
'royal_blue01' => 26,
|
34
|
+
'royal_blue02' => 27,
|
35
|
+
'toad_in_love01' => 28,
|
36
|
+
'sea_green01' => 29,
|
37
|
+
'teal01' => 30,
|
38
|
+
'cerulean_grey02' => 31,
|
39
|
+
'klein_blue' => 32,
|
40
|
+
'azure01' => 33,
|
41
|
+
'vert_de_pomme01' => 34,
|
42
|
+
'jade01' => 35,
|
43
|
+
'jade02' => 36,
|
44
|
+
'robin_egg_blue01' => 37,
|
45
|
+
'bondi_blue' => 38,
|
46
|
+
'light_blue01' => 39,
|
47
|
+
'vert_de_pomme02' => 40,
|
48
|
+
'malachite01' => 41,
|
49
|
+
'emerald01' => 42,
|
50
|
+
'turquoise' => 43,
|
51
|
+
'robin_egg_blue02' => 44,
|
52
|
+
'electric01' => 45,
|
53
|
+
'spring_green01' => 47,
|
54
|
+
'spring_green02' => 48,
|
55
|
+
'mint_green01' => 49,
|
56
|
+
'aquamarine01' => 50,
|
57
|
+
'flea_belly' => 52,
|
58
|
+
'plum' => 53,
|
59
|
+
'indigo' => 54,
|
60
|
+
'purple01' => 55,
|
61
|
+
'violet01' => 56,
|
62
|
+
'persian_blue02' => 57,
|
63
|
+
'khaki01' => 58,
|
64
|
+
'wet_asphalt01' => 59,
|
65
|
+
'seroburomalinovyj01' => 60,
|
66
|
+
'denim02' => 61,
|
67
|
+
'royal_blue03' => 62,
|
68
|
+
'royal_blue04' => 63,
|
69
|
+
'olive_drab' => 64,
|
70
|
+
'fern_green' => 65,
|
71
|
+
'slate_gray' => 66,
|
72
|
+
'steel_blue' => 67,
|
73
|
+
'cornflower_blue01' => 68,
|
74
|
+
'azure02' => 69,
|
75
|
+
'grass01' => 70,
|
76
|
+
'emerald02' => 71,
|
77
|
+
'sea_green02' => 72,
|
78
|
+
'robin_egg_blue03' => 73,
|
79
|
+
'bluish01' => 74,
|
80
|
+
'light_blue02' => 75,
|
81
|
+
'vert_de_pomme03' => 76,
|
82
|
+
'pale_green01' => 77,
|
83
|
+
'emerald03' => 78,
|
84
|
+
'aquamarine02' => 79,
|
85
|
+
'robin_egg_blue04' => 80,
|
86
|
+
'sky01' => 81,
|
87
|
+
'bright_green' => 82,
|
88
|
+
'malachite02' => 83,
|
89
|
+
'spring_green03' => 84,
|
90
|
+
'chartreuse01' => 85,
|
91
|
+
'aquamarine03' => 86,
|
92
|
+
'cyan01' => 87,
|
93
|
+
'maroon01' => 88,
|
94
|
+
'eggplant01' => 89,
|
95
|
+
'violet_eggplant01' => 90,
|
96
|
+
'purple02' => 91,
|
97
|
+
'violet02' => 92,
|
98
|
+
'violet03' => 93,
|
99
|
+
'khaki02' => 94,
|
100
|
+
'pale_mauve01' => 95,
|
101
|
+
'seroburomalinovyj02' => 96,
|
102
|
+
'amethyst01' => 97,
|
103
|
+
'amethyst02' => 98,
|
104
|
+
'heliotrope01' => 99,
|
105
|
+
'olive01' => 100,
|
106
|
+
'dark_tan' => 101,
|
107
|
+
'gray01' => [102, 243],
|
108
|
+
'bluish02' => 103,
|
109
|
+
'cornflower_blue02' => 104,
|
110
|
+
'royal_blue05' => 105,
|
111
|
+
'grass02' => 106,
|
112
|
+
'asparagus' => 107,
|
113
|
+
'swamp_green01' => 108,
|
114
|
+
'light_grey01' => 109,
|
115
|
+
'bluish03' => 110,
|
116
|
+
'cornflower_blue03' => 111,
|
117
|
+
'green_yellow01' => 112,
|
118
|
+
'pale_green02' => 113,
|
119
|
+
'emerald04' => 114,
|
120
|
+
'celadon' => 115,
|
121
|
+
'pale_blue01' => 116,
|
122
|
+
'sky02' => 117,
|
123
|
+
'viridian' => 118,
|
124
|
+
'vert_de_pomme04' => 119,
|
125
|
+
'mint_green02' => 120,
|
126
|
+
'chartreuse02' => 121,
|
127
|
+
'aquamarine04' => 122,
|
128
|
+
'electric02' => 123,
|
129
|
+
'bismarck_furious' => 124,
|
130
|
+
'eggplant02' => 125,
|
131
|
+
'red_violet01' => 126,
|
132
|
+
'violet_eggplant02' => 127,
|
133
|
+
'bright_violet' => [128, 164],
|
134
|
+
'violet04' => 129,
|
135
|
+
'ochre' => 130,
|
136
|
+
'pale_mauve02' => 131,
|
137
|
+
'pale_red_violet01' => 132,
|
138
|
+
'orchid01' => 133,
|
139
|
+
'amethyst03' => 134,
|
140
|
+
'heliotrope02' => 135,
|
141
|
+
'dark_goldenrod' => 136,
|
142
|
+
'pale_brown' => 137,
|
143
|
+
'mountbatten_pink' => 138,
|
144
|
+
'lilac01' => 139,
|
145
|
+
'wisteria01' => 140,
|
146
|
+
'amethyst04' => 141,
|
147
|
+
'old_gold' => 142,
|
148
|
+
'brass01' => 143,
|
149
|
+
'swamp_green02' => 144,
|
150
|
+
'light_grey02' => 145,
|
151
|
+
'niagara' => 146,
|
152
|
+
'wisteria02' => 147,
|
153
|
+
'lime01' => 148,
|
154
|
+
'pistachio01' => 149,
|
155
|
+
'moss_green' => 150,
|
156
|
+
'dark_tea_green' => 151,
|
157
|
+
'pale_blue02' => 152,
|
158
|
+
'pale_cornflower_blue' => 153,
|
159
|
+
'green_yellow02' => 154,
|
160
|
+
'green_yellow03' => 155,
|
161
|
+
'pistachio02' => 156,
|
162
|
+
'chartreuse03' => 157,
|
163
|
+
'aquamarine05' => 158,
|
164
|
+
'pale_blue03' => 159,
|
165
|
+
'titian' => 160,
|
166
|
+
'cerise01' => 161,
|
167
|
+
'red_violet02' => 162,
|
168
|
+
'hot_pink01' => 163,
|
169
|
+
'magenta01' => 165,
|
170
|
+
'tenne' => 166,
|
171
|
+
'chestnut01' => 167,
|
172
|
+
'pale_red_violet02' => 168,
|
173
|
+
'orchid02' => 169,
|
174
|
+
'orchid03' => 170,
|
175
|
+
'heliotrope03' => 171,
|
176
|
+
'siena' => 172,
|
177
|
+
'dark_salmon' => 173,
|
178
|
+
'puce01' => 174,
|
179
|
+
'puce2' => 175,
|
180
|
+
'violaceous01' => 176,
|
181
|
+
'violaceous02' => 177,
|
182
|
+
'dark_pear' => 178,
|
183
|
+
'brass02' => 179,
|
184
|
+
'tan' => 180,
|
185
|
+
'pale_chestnut' => 181,
|
186
|
+
'lilac02' => 182,
|
187
|
+
'wisteria03' => 183,
|
188
|
+
'childs_surprise' => 184,
|
189
|
+
'vert_de_peche' => 185,
|
190
|
+
'flax' => 186,
|
191
|
+
'gray_tea_green' => 187,
|
192
|
+
'abdel_kerims_beard01' => 188,
|
193
|
+
'periwinkle' => 189,
|
194
|
+
'lime02' => 190,
|
195
|
+
'pistachio03' => 191,
|
196
|
+
'pistachio04' => 192,
|
197
|
+
'tea_green01' => 193,
|
198
|
+
'tea_green02' => 194,
|
199
|
+
'pang' => 195,
|
200
|
+
'crimson' => 197,
|
201
|
+
'cerise02' => 198,
|
202
|
+
'hot_pink02' => 199,
|
203
|
+
'hot_pink03' => 200,
|
204
|
+
'international_orange' => 202,
|
205
|
+
'alizarin' => 203,
|
206
|
+
'dark_pink01' => 204,
|
207
|
+
'dark_pink02' => 205,
|
208
|
+
'shocked_star' => 206,
|
209
|
+
'fuchsia' => 207,
|
210
|
+
'tangerine' => 208,
|
211
|
+
'salmon' => 209,
|
212
|
+
'chestnut02' => 210,
|
213
|
+
'pale_red_violet03' => 211,
|
214
|
+
'pale_magenta' => 212,
|
215
|
+
'violaceous03' => 213,
|
216
|
+
'orange' => 214,
|
217
|
+
'pink_orange' => 215,
|
218
|
+
'saumon' => 216,
|
219
|
+
'pink01' => 217,
|
220
|
+
'pink02' => 218,
|
221
|
+
'violaceous04' => 219,
|
222
|
+
'gold' => 220,
|
223
|
+
'mustard01' => 221,
|
224
|
+
'mustard02' => 222,
|
225
|
+
'dark_peach' => 223,
|
226
|
+
'pale_pink' => 224,
|
227
|
+
'thistle' => 225,
|
228
|
+
'corn01' => 227,
|
229
|
+
'corn02' => 228,
|
230
|
+
'perhydor' => 229,
|
231
|
+
'lemon_cream' => 230,
|
232
|
+
'black01' => 232,
|
233
|
+
'black02' => 233,
|
234
|
+
'black03' => 234,
|
235
|
+
'bistre' => 235,
|
236
|
+
'anthracite' => 236,
|
237
|
+
'wet_asphalt02' => 237,
|
238
|
+
'wet_asphalt03' => 238,
|
239
|
+
'wet_asphalt04' => 239,
|
240
|
+
'wet_asphalt05' => 240,
|
241
|
+
'wet_asphalt06' => 241,
|
242
|
+
'wet_asphalt07' => 242,
|
243
|
+
'gray02' => 245,
|
244
|
+
'gray03' => 246,
|
245
|
+
'gray04' => 247,
|
246
|
+
'gray05' => 248,
|
247
|
+
'light_grey03' => 249,
|
248
|
+
'light_grey04' => 250,
|
249
|
+
'silver01' => 251,
|
250
|
+
'abdel_kerims_beard02' => 252,
|
251
|
+
'abdel_kerims_beard03' => 253,
|
252
|
+
'abdel_kerims_beard04' => 254,
|
253
|
+
'seashell' => 255
|
254
|
+
},
|
255
|
+
16 => {
|
256
|
+
'black' => 30,
|
257
|
+
'red' => 31,
|
258
|
+
'green' => 32,
|
259
|
+
'yellow' => 33,
|
260
|
+
'blue' => 34,
|
261
|
+
'magenta' => 35,
|
262
|
+
'cyan' => 36,
|
263
|
+
'white' => 37,
|
264
|
+
'bright_black' => [30, 1],
|
265
|
+
'bright_red' => [31, 1],
|
266
|
+
'bright_green' => [32, 1],
|
267
|
+
'bright_yellow' => [33, 1],
|
268
|
+
'bright_blue' => [34, 1],
|
269
|
+
'bright_magenta' => [35, 1],
|
270
|
+
'bright_cyan' => [36, 1],
|
271
|
+
'bright_white' => [37, 1],
|
272
|
+
},
|
273
|
+
8 => {
|
274
|
+
'black' => 30,
|
275
|
+
'red' => 31,
|
276
|
+
'green' => 32,
|
277
|
+
'yellow' => 33,
|
278
|
+
'blue' => 34,
|
279
|
+
'magenta' => 35,
|
280
|
+
'cyan' => 36,
|
281
|
+
'white' => 37,
|
282
|
+
}
|
283
|
+
},
|
284
|
+
:background => {
|
285
|
+
16 => {
|
286
|
+
'black' => 40,
|
287
|
+
'red' => 41,
|
288
|
+
'green' => 42,
|
289
|
+
'yellow' => 43,
|
290
|
+
'blue' => 44,
|
291
|
+
'magenta' => 45,
|
292
|
+
'cyan' => 46,
|
293
|
+
'white' => 47,
|
294
|
+
'bright_black' => 40,
|
295
|
+
'bright_red' => 41,
|
296
|
+
'bright_green' => 42,
|
297
|
+
'bright_yellow' => 43,
|
298
|
+
'bright_blue' => 44,
|
299
|
+
'bright_magenta' => 45,
|
300
|
+
'bright_cyan' => 46,
|
301
|
+
'bright_white' => 47,
|
302
|
+
},
|
303
|
+
}
|
304
|
+
}
|
305
|
+
@@colors[:background][256] = @@colors[:foreground][256]
|
306
|
+
@@colors[:background][8] = @@colors[:background][16]
|
307
|
+
|
308
|
+
# The default colour options Hash.
|
309
|
+
OPTS = {
|
310
|
+
:from => :readable,
|
311
|
+
:foreground => false,
|
312
|
+
:background => false,
|
313
|
+
:bold => false,
|
314
|
+
:italic => false,
|
315
|
+
:underline => false,
|
316
|
+
}
|
317
|
+
|
318
|
+
attr_reader :color_model
|
319
|
+
|
320
|
+
# @return []
|
321
|
+
attr_reader :options
|
322
|
+
|
323
|
+
def initialize(color_model, options = {})
|
324
|
+
@options = OPTS.merge(options)
|
325
|
+
@color_model = color_model
|
326
|
+
set_layers
|
327
|
+
end
|
328
|
+
|
329
|
+
def foreground(readable = false)
|
330
|
+
@readable_fg = find_color(:foreground)
|
331
|
+
readable ? @readable_fg : layer_color(colors[@readable_fg])
|
332
|
+
end
|
333
|
+
|
334
|
+
def background(readable = false)
|
335
|
+
@readable_bg = find_color(:background)
|
336
|
+
readable ? @readable_bg : layer_color(colors(:background)[@readable_bg])
|
337
|
+
end
|
338
|
+
|
339
|
+
def to_ansi
|
340
|
+
fg, bg = !!foreground, !!background
|
341
|
+
create_ansi_sequence(fg, bg)
|
342
|
+
end
|
343
|
+
|
344
|
+
private
|
345
|
+
|
346
|
+
def set_layers
|
347
|
+
foreground
|
348
|
+
background
|
349
|
+
end
|
350
|
+
|
351
|
+
def create_ansi_sequence(fg, bg, default_seq)
|
352
|
+
(if fg && bg
|
353
|
+
[[build_fg_sequence], [build_effects_sequence], [build_bg_sequence]].flatten
|
354
|
+
elsif fg && !bg
|
355
|
+
[[build_fg_sequence], [build_effects_sequence]].flatten
|
356
|
+
elsif !fg && bg
|
357
|
+
[[build_bg_sequence], [build_effects_sequence]].flatten
|
358
|
+
else
|
359
|
+
build_effects_sequence.tap { |sequence|
|
360
|
+
sequence << default_seq if sequence.empty?
|
361
|
+
}
|
362
|
+
end).join(';')
|
363
|
+
end
|
364
|
+
|
365
|
+
def build_fg_sequence
|
366
|
+
[foreground]
|
367
|
+
end
|
368
|
+
|
369
|
+
def build_effects_sequence
|
370
|
+
[bold, italic, underline].delete_if { |e| e == false }
|
371
|
+
end
|
372
|
+
|
373
|
+
def build_bg_sequence
|
374
|
+
[background]
|
375
|
+
end
|
376
|
+
|
377
|
+
def layer_color(layer)
|
378
|
+
if layer
|
379
|
+
layer.is_a?(Array) ? build_layer(layer) : layer
|
380
|
+
else
|
381
|
+
false
|
382
|
+
end
|
383
|
+
end
|
384
|
+
|
385
|
+
def build_layer(layer)
|
386
|
+
layer.first
|
387
|
+
end
|
388
|
+
|
389
|
+
def find_color(layer)
|
390
|
+
case (color_id = cast_color(layer))
|
391
|
+
when String
|
392
|
+
return color_id if colors.has_key?(color_id)
|
393
|
+
when Fixnum
|
394
|
+
color_id = find_from_fixnum(color_id)
|
395
|
+
return color_id if color_id
|
396
|
+
when false
|
397
|
+
return color_id
|
398
|
+
end
|
399
|
+
|
400
|
+
raise ArgumentError, %|invalid #{ layer.to_s } value "#{ color_id }"|
|
401
|
+
end
|
402
|
+
|
403
|
+
def cast_color(layer)
|
404
|
+
return false unless options[layer]
|
405
|
+
|
406
|
+
case options[:from]
|
407
|
+
when :readable
|
408
|
+
options[layer]
|
409
|
+
when :hex
|
410
|
+
HEX.new(options[layer]).to_term(color_model).to_i
|
411
|
+
when :rgb
|
412
|
+
RGB.new(options[layer]).to_term(color_model).to_i
|
413
|
+
when :term
|
414
|
+
TERM.new(options[layer], color_model).to_i
|
415
|
+
end
|
416
|
+
end
|
417
|
+
|
418
|
+
def colors(layer = :foreground)
|
419
|
+
@@colors[layer][color_model]
|
420
|
+
end
|
421
|
+
|
422
|
+
def sorted_colors
|
423
|
+
colors.sort_by { |k, v| v.is_a?(Array) ? v.first + 10 : v }
|
424
|
+
end
|
425
|
+
|
426
|
+
end
|
427
|
+
end
|
428
|
+
|
429
|
+
Dir[File.expand_path('../colors/*.rb', __FILE__)].each do |file|
|
430
|
+
require file
|
431
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module PryTheme
|
2
|
+
class ColorTable
|
3
|
+
|
4
|
+
class << self
|
5
|
+
def t256
|
6
|
+
ColorTable.new(256).table
|
7
|
+
end
|
8
|
+
|
9
|
+
def t16
|
10
|
+
ColorTable.new(16).table
|
11
|
+
end
|
12
|
+
|
13
|
+
def t8
|
14
|
+
ColorTable.new(8).table
|
15
|
+
end
|
16
|
+
|
17
|
+
def build_color_string(color, fg = nil)
|
18
|
+
"\e[7;%sm%s\e[0m:\e[%sm%s\e[0m" %
|
19
|
+
[color.to_ansi, fg || color.foreground,
|
20
|
+
color.to_ansi, color.foreground(true)]
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def initialize(color_model)
|
25
|
+
@color_model = color_model
|
26
|
+
end
|
27
|
+
|
28
|
+
def table
|
29
|
+
colors = []
|
30
|
+
0.upto(@color_model - 1) { |i|
|
31
|
+
color = PryTheme.const_get(:"Color#@color_model").new(
|
32
|
+
:from => :term, :foreground => i)
|
33
|
+
colors << self.class.build_color_string(color, i)
|
34
|
+
}
|
35
|
+
Pry::Helpers.tablify_or_one_line("Color model #@color_model", colors)
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module PryTheme
|
2
|
+
class Color16 < Color
|
3
|
+
|
4
|
+
def initialize(options = {})
|
5
|
+
super(16, options)
|
6
|
+
end
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def create_ansi_sequence(fg, bg)
|
11
|
+
super(fg, bg, '39;49')
|
12
|
+
end
|
13
|
+
|
14
|
+
def build_fg_sequence
|
15
|
+
[foreground]
|
16
|
+
end
|
17
|
+
|
18
|
+
def build_bg_sequence
|
19
|
+
[background]
|
20
|
+
end
|
21
|
+
|
22
|
+
def build_effects_sequence
|
23
|
+
[]
|
24
|
+
end
|
25
|
+
|
26
|
+
def find_from_fixnum(color_id)
|
27
|
+
sorted_colors.each_with_index.to_a.rassoc(color_id).first.first
|
28
|
+
end
|
29
|
+
|
30
|
+
def build_layer(layer)
|
31
|
+
layer.join(';')
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module PryTheme
|
2
|
+
class Color256 < PryTheme::Color
|
3
|
+
|
4
|
+
include Formattable
|
5
|
+
|
6
|
+
def initialize(options = {})
|
7
|
+
super(256, options)
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def create_ansi_sequence(fg, bg)
|
13
|
+
super(fg, bg, '0')
|
14
|
+
end
|
15
|
+
|
16
|
+
def build_fg_sequence
|
17
|
+
['38', '5', foreground]
|
18
|
+
end
|
19
|
+
|
20
|
+
def build_bg_sequence
|
21
|
+
['48', '5', background]
|
22
|
+
end
|
23
|
+
|
24
|
+
def find_from_fixnum(color_id)
|
25
|
+
pair = colors.find { |*term| term.first.flatten.include?(color_id) }
|
26
|
+
pair.first if pair
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module PryTheme
|
2
|
+
class Color8 < Color
|
3
|
+
|
4
|
+
def initialize(options = {})
|
5
|
+
super(8, options)
|
6
|
+
end
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def create_ansi_sequence(fg, bg)
|
11
|
+
super(fg, bg, '39;49')
|
12
|
+
end
|
13
|
+
|
14
|
+
def build_fg_sequence
|
15
|
+
[foreground]
|
16
|
+
end
|
17
|
+
|
18
|
+
def build_bg_sequence
|
19
|
+
[background]
|
20
|
+
end
|
21
|
+
|
22
|
+
def find_from_fixnum(color_id)
|
23
|
+
sorted_colors.each_with_index.to_a.rassoc(color_id).first.first
|
24
|
+
end
|
25
|
+
|
26
|
+
def build_effects_sequence
|
27
|
+
[]
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|