pry-theme 0.1.3 → 0.2.0

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.
Files changed (87) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +1 -0
  3. data/.travis.yml +8 -1
  4. data/CHANGELOG.md +40 -0
  5. data/Gemfile +1 -1
  6. data/README.md +26 -48
  7. data/Rakefile +10 -1
  8. data/VERSION +1 -0
  9. data/lib/pry-theme/basic_editor.rb +116 -0
  10. data/lib/pry-theme/color.rb +431 -0
  11. data/lib/pry-theme/color_table.rb +39 -0
  12. data/lib/pry-theme/colors/color16.rb +35 -0
  13. data/lib/pry-theme/colors/color256.rb +30 -0
  14. data/lib/pry-theme/colors/color8.rb +31 -0
  15. data/lib/pry-theme/commands.rb +237 -275
  16. data/lib/pry-theme/declaration.rb +120 -0
  17. data/lib/pry-theme/definition.rb +111 -0
  18. data/lib/pry-theme/formattable.rb +26 -0
  19. data/lib/pry-theme/hex.rb +76 -0
  20. data/lib/pry-theme/preview.rb +74 -0
  21. data/lib/pry-theme/rgb.rb +238 -13
  22. data/lib/pry-theme/term.rb +66 -0
  23. data/lib/pry-theme/theme.rb +116 -26
  24. data/lib/pry-theme/theme_list.rb +52 -0
  25. data/lib/pry-theme/when_started_hook.rb +25 -27
  26. data/lib/pry-theme.rb +84 -158
  27. data/pry-theme.gemspec +14 -18
  28. data/spec/color_table.rb +53 -0
  29. data/spec/colors/color16_spec.rb +255 -0
  30. data/spec/colors/color256_spec.rb +323 -0
  31. data/spec/colors/color8_spec.rb +254 -0
  32. data/spec/commands_spec.rb +203 -0
  33. data/spec/helper.rb +16 -0
  34. data/spec/hex_spec.rb +52 -0
  35. data/spec/rgb_spec.rb +81 -0
  36. data/spec/term_spec.rb +23 -0
  37. data/spec/theme_spec.rb +486 -0
  38. data/themes/github.prytheme.rb +49 -0
  39. data/themes/monokai.prytheme.rb +48 -0
  40. data/themes/pry-classic-16.prytheme.rb +48 -0
  41. data/themes/pry-classic-256.prytheme.rb +48 -0
  42. data/themes/pry-classic-8.prytheme.rb +48 -0
  43. data/themes/pry-cold.prytheme.rb +49 -0
  44. data/themes/pry-love-16.prytheme.rb +48 -0
  45. data/themes/pry-love-8.prytheme.rb +48 -0
  46. data/themes/pry-modern-16.prytheme.rb +48 -0
  47. data/themes/pry-modern-256.prytheme.rb +48 -0
  48. data/themes/pry-modern-8.prytheme.rb +48 -0
  49. data/themes/pry-monochrome.prytheme.rb +32 -0
  50. data/themes/pry-siberia-16.prytheme.rb +48 -0
  51. data/themes/pry-siberia-8.prytheme.rb +48 -0
  52. data/themes/pry-tepid-16.prytheme.rb +48 -0
  53. data/themes/pry-tepid-8.prytheme.rb +48 -0
  54. data/themes/pry-zealand-16.prytheme.rb +48 -0
  55. data/themes/pry-zealand-8.prytheme.rb +49 -0
  56. data/themes/railscasts.prytheme.rb +50 -0
  57. data/themes/solarized.prytheme.rb +48 -0
  58. data/themes/tomorrow.prytheme.rb +48 -0
  59. data/themes/twilight.prytheme.rb +48 -0
  60. data/themes/vim-default.prytheme.rb +50 -0
  61. data/themes/vim-detailed.prytheme.rb +50 -0
  62. data/themes/zenburn.prytheme.rb +48 -0
  63. metadata +56 -41
  64. data/lib/pry-theme/color_converter.rb +0 -55
  65. data/lib/pry-theme/helper.rb +0 -87
  66. data/lib/pry-theme/palette.rb +0 -85
  67. data/lib/pry-theme/term_notation.rb +0 -17
  68. data/lib/pry-theme/version.rb +0 -3
  69. data/test/fixtures/pry-classic.prytheme +0 -38
  70. data/test/helper.rb +0 -56
  71. data/test/test_color_converter.rb +0 -38
  72. data/test/test_commands.rb +0 -55
  73. data/test/test_helper.rb +0 -45
  74. data/test/test_palette.rb +0 -11
  75. data/themes/github.prytheme +0 -43
  76. data/themes/monokai.prytheme +0 -42
  77. data/themes/pry-classic.prytheme +0 -43
  78. data/themes/pry-cold.prytheme +0 -43
  79. data/themes/pry-modern.prytheme +0 -42
  80. data/themes/railscasts.prytheme +0 -44
  81. data/themes/saturday.prytheme +0 -42
  82. data/themes/solarized.prytheme +0 -43
  83. data/themes/tomorrow.prytheme +0 -43
  84. data/themes/twilight.prytheme +0 -42
  85. data/themes/vim-default.prytheme +0 -42
  86. data/themes/vim-detailed.prytheme +0 -42
  87. data/themes/zenburn.prytheme +0 -43
@@ -0,0 +1,486 @@
1
+ require 'helper'
2
+
3
+ describe PryTheme::Theme do
4
+ describe "name option" do
5
+ it "defaults to some value if it's not specified" do
6
+ theme = PryTheme.create{}
7
+ theme.name.should =~ /prytheme-\d+/
8
+ end
9
+
10
+ it "adds a theme name" do
11
+ theme = PryTheme.create(:name => 'w00t'){}
12
+ theme.name.should == 'w00t'
13
+ end
14
+
15
+ describe "validation" do
16
+ it "ensures that the first character is a letter" do
17
+ lambda { PryTheme.create(:name => '0ol'){} }.
18
+ should.raise(PryTheme::ThemeError).
19
+ message.should.match /must start with a letter/
20
+ end
21
+
22
+ it "ensures that the the length is no longer than 18 characters" do
23
+ long_n = 'x' * 19
24
+ lambda { PryTheme.create(:name => long_n){} }.
25
+ should.raise(PryTheme::ThemeError).
26
+ message.should.match /no longer than 18 characters/
27
+ end
28
+ end
29
+ end
30
+
31
+ describe "color model option" do
32
+ it "defaults to some value if it's not specified" do
33
+ theme = PryTheme.create{}
34
+ theme.color_model.should == 256
35
+ end
36
+
37
+ it "adds color model" do
38
+ theme = PryTheme.create(:color_model => 8){}
39
+ theme.color_model.should == 8
40
+ end
41
+
42
+ describe "validation" do
43
+ it "ensures that it's a correct number" do
44
+ lambda { PryTheme.create(:name => 'w00t', :color_model => 255){} }.
45
+ should.raise(PryTheme::ThemeError).
46
+ message.should.match /incorrect color model/
47
+ end
48
+ end
49
+ end
50
+
51
+ describe "#author" do
52
+ it "defaults to some value if it's not specified" do
53
+ theme = PryTheme.create{}
54
+ theme.author.first[:name].should == 'Unknown Author'
55
+ end
56
+
57
+ it "adds an author" do
58
+ theme = PryTheme.create{ author(:name => 'Kvitka', :email => 'kvi@t.ka') }
59
+ theme.author.first[:name].should == 'Kvitka'
60
+ theme.author.first[:email].should == 'kvi@t.ka'
61
+ end
62
+
63
+ it "adds multiple authors" do
64
+ theme = PryTheme.create{
65
+ author(:name => 'Kvitka', :email => 'kvi@t.ka')
66
+ author(:name => 'Cisyk', :email => 'ci@s.yk') }
67
+ theme.author.first[:name].should == 'Kvitka'
68
+ theme.author.first[:email].should == 'kvi@t.ka'
69
+ theme.author.last[:name].should == 'Cisyk'
70
+ theme.author.last[:email].should == 'ci@s.yk'
71
+ end
72
+
73
+ describe "validation" do
74
+ it "ensures that the the length is no longer than 32 characters" do
75
+ long_n = 'x' * 33
76
+ lambda { PryTheme.create{ author(:name => long_n)} }.
77
+ should.raise(PryTheme::ThemeError).
78
+ message.should.match /no longer than 32 characters/
79
+ end
80
+ end
81
+ end
82
+
83
+ describe "#description" do
84
+ it "defaults to some value if it's not specified" do
85
+ theme = PryTheme.create{}
86
+ theme.description.should == ''
87
+
88
+ end
89
+
90
+ it "adds description" do
91
+ theme = PryTheme.create{ description('wub wub') }
92
+ theme.description.should == 'wub wub'
93
+ end
94
+
95
+ describe "validation" do
96
+ it "ensures that the the length is no longer than 280 characters" do
97
+ long_d = 'x' * 281
98
+ lambda { PryTheme.create{ description(long_d)} }.
99
+ should.raise(PryTheme::ThemeError).
100
+ message.should.match /no longer than 280 characters/
101
+ end
102
+ end
103
+ end
104
+
105
+ describe "definition" do
106
+ describe "correct theme" do
107
+ describe "with 8 colours" do
108
+ it "sets foreground" do
109
+ theme = PryTheme.create(:color_model => 8) {
110
+ define_theme{ constant('blue') } }
111
+ theme.definition.constant.foreground.should == 34
112
+ theme.definition.constant.background.should == false
113
+ end
114
+
115
+ it "sets backround" do
116
+ theme = PryTheme.create(:color_model => 8) {
117
+ define_theme{ constant(:bg => 'blue') } }
118
+ theme.definition.constant.foreground.should == false
119
+ theme.definition.constant.background.should == 44
120
+ end
121
+
122
+ it "sets foreground and background" do
123
+ theme = PryTheme.create(:color_model => 8) {
124
+ define_theme{ symbol('blue', 'red') } }
125
+ theme.definition.symbol.foreground.should == 34
126
+ theme.definition.symbol.background.should == 41
127
+ end
128
+
129
+ it "defaults to proper colours" do
130
+ theme = PryTheme.create(:color_model => 8){ define_theme{} }
131
+ theme.definition.integer.to_ansi.should == '39;49'
132
+ end
133
+ end
134
+
135
+ describe "with 16 colours" do
136
+ it "sets foreground" do
137
+ theme = PryTheme.create(:color_model => 16) {
138
+ define_theme{ constant('bright_blue') } }
139
+ theme.definition.constant.foreground.should == '34;1'
140
+ theme.definition.constant.background.should == false
141
+ end
142
+
143
+ it "sets backround" do
144
+ theme = PryTheme.create(:color_model => 16) {
145
+ define_theme{ constant(:bg => 'bright_yellow') } }
146
+ theme.definition.constant.foreground.should == false
147
+ theme.definition.constant.background.should == 43
148
+ end
149
+
150
+ it "sets foreground and background" do
151
+ theme = PryTheme.create(:color_model => 16) {
152
+ define_theme{ symbol('blue', 'red') } }
153
+ theme.definition.symbol.foreground.should == 34
154
+ theme.definition.symbol.background.should == 41
155
+ end
156
+
157
+ it "defaults to proper colours" do
158
+ theme = PryTheme.create(:color_model => 16){ define_theme{} }
159
+ theme.definition.integer.to_ansi.should == '39;49'
160
+ end
161
+ end
162
+
163
+ describe "with 256" do
164
+ it "sets foreground" do
165
+ theme = PryTheme.create(:color_model => 256) {
166
+ define_theme{ constant('celadon') } }
167
+ theme.definition.constant.foreground.should == 115
168
+ theme.definition.constant.background.should == false
169
+ end
170
+
171
+ it "sets backround" do
172
+ theme = PryTheme.create(:color_model => 256) {
173
+ define_theme{ constant(:bg => 'viridian') } }
174
+ theme.definition.constant.foreground.should == false
175
+ theme.definition.constant.background.should == 118
176
+ end
177
+
178
+ it "sets foreground and background" do
179
+ theme = PryTheme.create(:color_model => 256) {
180
+ define_theme{ symbol('celadon', 'viridian') } }
181
+ theme.definition.symbol.foreground.should == 115
182
+ theme.definition.symbol.background.should == 118
183
+ end
184
+
185
+ it "defaults to proper colours" do
186
+ theme = PryTheme.create(:color_model => 256){ define_theme{} }
187
+ theme.definition.integer.to_ansi.should == '0'
188
+ end
189
+
190
+ describe "effects" do
191
+ it "sets effects without layers" do
192
+ theme = PryTheme.create(:color_model => 256) {
193
+ define_theme{ symbol([:bold, :underline, :italic]) } }
194
+ theme.definition.symbol.foreground.should == false
195
+ theme.definition.symbol.background.should == false
196
+ theme.definition.symbol.bold?.should == true
197
+ theme.definition.symbol.underline?.should == true
198
+ theme.definition.symbol.italic?.should == true
199
+ end
200
+
201
+ it "sets effects and foreground" do
202
+ theme = PryTheme.create(:color_model => 256) {
203
+ define_theme{ symbol('sky02', [:bold, :underline, :italic]) } }
204
+ theme.definition.symbol.foreground.should == 117
205
+ theme.definition.symbol.background.should == false
206
+ theme.definition.symbol.bold?.should == true
207
+ theme.definition.symbol.underline?.should == true
208
+ theme.definition.symbol.italic?.should == true
209
+ end
210
+
211
+ it "sets effects and background" do
212
+ theme = PryTheme.create(:color_model => 256) {
213
+ define_theme{
214
+ symbol({:bg => 'olive01'}, [:bold, :underline, :italic]) } }
215
+ theme.definition.symbol.foreground.should == false
216
+ theme.definition.symbol.background.should == 100
217
+ theme.definition.symbol.bold?.should == true
218
+ theme.definition.symbol.underline?.should == true
219
+ theme.definition.symbol.italic?.should == true
220
+ end
221
+
222
+ it "sets effects, foreground and background" do
223
+ theme = PryTheme.create(:color_model => 256) {
224
+ define_theme{
225
+ symbol('sky02', 'olive01', [:bold, :underline, :italic]) } }
226
+ theme.definition.symbol.foreground.should == 117
227
+ theme.definition.symbol.background.should == 100
228
+ theme.definition.symbol.bold?.should == true
229
+ theme.definition.symbol.underline?.should == true
230
+ theme.definition.symbol.italic?.should == true
231
+ end
232
+ end
233
+ end
234
+ end
235
+
236
+ describe "broken theme" do
237
+ it "raises error when colour definition is malformed" do
238
+ should.raise(PryTheme::ThemeError) {
239
+ PryTheme.create{ define_theme { class_ 'wowzers' } }
240
+ }.message.should =~ /malformed color declaration \(wowzers\)/
241
+ end
242
+
243
+ describe "with 8 colours" do
244
+ it "doesn't allow effects" do
245
+ lambda { PryTheme.create(:color_model => 8) {
246
+ define_theme{ constant('blue', [:bold]) } } }.
247
+ should.raise(PryTheme::ThemeError).
248
+ message.should.match /effects are available only for 256-color themes/
249
+
250
+ lambda { PryTheme.create(:color_model => 8) {
251
+ define_theme{ constant({:fg => 'blue'}, [:bold]) } } }.
252
+ should.raise(PryTheme::ThemeError).
253
+ message.should.match /effects are available only for 256-color themes/
254
+
255
+
256
+ lambda { PryTheme.create(:color_model => 8) {
257
+ define_theme{ constant([:bold]) } } }.
258
+ should.raise(PryTheme::ThemeError).
259
+ message.should.match /effects are available only for 256-color themes/
260
+ end
261
+ end
262
+
263
+ describe "with 16 colours" do
264
+ it "doesn't allow effects" do
265
+ lambda { PryTheme.create(:color_model => 16) {
266
+ define_theme{ constant('blue', [:bold]) } } }.
267
+ should.raise(PryTheme::ThemeError).
268
+ message.should.match /effects are available only for 256-color themes/
269
+
270
+ lambda { PryTheme.create(:color_model => 16) {
271
+ define_theme{ constant({:fg => 'blue'}, [:bold]) } } }.
272
+ should.raise(PryTheme::ThemeError).
273
+ message.should.match /effects are available only for 256-color themes/
274
+
275
+ lambda { PryTheme.create(:color_model => 16) {
276
+ define_theme{ constant([:bold]) } } }.
277
+ should.raise(PryTheme::ThemeError).
278
+ message.should.match /effects are available only for 256-color themes/
279
+ end
280
+ end
281
+
282
+ describe "non-existent options" do
283
+ it "raises error" do
284
+ lambda { PryTheme.create { define_theme { klass 'red' } } }.
285
+ should.raise(PryTheme::ThemeError).
286
+ message.should.match /unknown option "klass"/
287
+ end
288
+ end
289
+ end
290
+ end
291
+
292
+ describe "nested definition" do
293
+ it "doesn't conflict with other nested definitions" do
294
+ theme = PryTheme.create(:color_model => 8) {
295
+ define_theme{
296
+ regexp{ self_ 'blue' }
297
+ string{ self_ 'green'; delimiter 'black' } } }
298
+ theme.definition.regexp.self_.foreground(true).should == 'blue'
299
+ theme.definition.string.self_.foreground(true).should == 'green'
300
+ theme.definition.regexp.modifier.to_ansi.should == '39;49'
301
+ theme.definition.string.delimiter.foreground(true).should == 'black'
302
+ theme.definition.regexp.delimiter.to_ansi.should == '39;49'
303
+ theme.definition.shell.delimiter.to_ansi.should == '39;49'
304
+ end
305
+ end
306
+
307
+ describe "a wholesome theme" do
308
+ it "works with all options :-)" do
309
+ lambda {
310
+ PryTheme.create(:name => 'wholesome', :color_model => 8) {
311
+ author :name => 'Kyrylo Silin', :email => 'kyrylosilin@gmail.com'
312
+ description 'a kool theme!'
313
+ define_theme {
314
+ class_ 'magenta'
315
+ class_variable 'cyan'
316
+ comment 'blue'
317
+ constant 'blue'
318
+ error 'yellow', 'red'
319
+ float 'magenta'
320
+ global_variable :bg => 'green'
321
+ inline_delimiter 'blue'
322
+ instance_variable 'red'
323
+ integer 'blue'
324
+ keyword 'red'
325
+ method 'blue'
326
+ predefined_constant 'cyan'
327
+ symbol 'green'
328
+ regexp {
329
+ self_ 'red'
330
+ char 'magenta'
331
+ content 'red'
332
+ delimiter 'red'
333
+ modifier 'magenta'
334
+ escape 'magenta' }
335
+ shell {
336
+ self_ :bg => 'green'
337
+ char 'magenta'
338
+ content 'yellow'
339
+ delimiter 'white'
340
+ escape 'black' }
341
+ string {
342
+ self_ 'green'
343
+ char 'white'
344
+ content 'green'
345
+ delimiter 'green'
346
+ escape 'white' } } }
347
+ }.should.not.raise
348
+ end
349
+ end
350
+
351
+ describe "declaration type guessing" do
352
+ it "guesses random colour types" do
353
+ theme = PryTheme.create(:color_model => 8) {
354
+ define_theme {
355
+ class_ 'magenta'
356
+ class_variable '#1188AA'
357
+ comment 3
358
+ constant 'blue'
359
+ error [111, 111, 101], [31, 125, 255]
360
+ float '0, 0, 125'
361
+ global_variable :bg => 5
362
+ inline_delimiter :bg => '#cabe99'
363
+ string {
364
+ content '#122122', '#FA4499' } } }
365
+ d = theme.definition
366
+ d.class_.foreground.should == 35
367
+ d.class_variable.foreground.should == 30
368
+ d.comment.foreground.should == 33
369
+ d.constant.foreground.should == 34
370
+ d.error.foreground.should == 31
371
+ d.error.background.should == 41
372
+ d.global_variable.foreground.should == false
373
+ d.global_variable.background.should == 45
374
+ d.inline_delimiter.foreground.should == false
375
+ d.inline_delimiter.background.should == 45
376
+ d.string.content.foreground.should == 30
377
+ d.string.content.background.should == 46
378
+ end
379
+
380
+ #it "raises error if background and foreground aren't of the same type" do
381
+ #lambda { PryTheme.create(:color_model => 8) {
382
+ #define_theme { class_ 'magenta', '#123456' } } }.
383
+ #should.raise(PryTheme::ThemeError).
384
+ #message.should.match /foreground and background are not of the same type/
385
+
386
+ #lambda { PryTheme.create(:color_model => 8) {
387
+ #define_theme { class_ '#123456', 'magenta' } } }.
388
+ #should.raise(PryTheme::ThemeError).
389
+ #message.should.match /foreground and background are not of the same type/
390
+
391
+ #lambda { PryTheme.create(:color_model => 8) {
392
+ #define_theme { class_ '#123456', '31, 31, 31' } } }.
393
+ #should.raise(PryTheme::ThemeError).
394
+ #message.should.match /foreground and background are not of the same type/
395
+
396
+ #lambda { PryTheme.create(:color_model => 8) {
397
+ #define_theme { class_ '31, 31, 31', '#123456' } } }.
398
+ #should.raise(PryTheme::ThemeError).
399
+ #message.should.match /foreground and background are not of the same type/
400
+
401
+ #lambda { PryTheme.create(:color_model => 8) {
402
+ #define_theme { class_ '31, 31, 31', 'magenta' } } }.
403
+ #should.raise(PryTheme::ThemeError).
404
+ #message.should.match /foreground and background are not of the same type/
405
+
406
+ #lambda { PryTheme.create(:color_model => 8) {
407
+ #define_theme { class_ 'magenta', '31, 31, 31' } } }.
408
+ #should.raise(PryTheme::ThemeError).
409
+ #message.should.match /foreground and background are not of the same type/
410
+ #end
411
+ end
412
+
413
+ describe "state" do
414
+ it "can be active" do
415
+ theme = PryTheme.create{}
416
+ theme.activate
417
+ theme.active?.should == true
418
+ end
419
+
420
+ it "can be disabled" do
421
+ theme = PryTheme.create{}
422
+ theme.activate
423
+ theme.disable
424
+ theme.active?.should == false
425
+ end
426
+
427
+ it "is inactive by default" do
428
+ theme = PryTheme.create{}
429
+ theme.active?.should == false
430
+ end
431
+ end
432
+
433
+ describe "#to_coderay" do
434
+ before do
435
+ @coderay_hash = {
436
+ :class => '48;5;118',
437
+ :class_variable => '0',
438
+ :comment => '0',
439
+ :constant => '0',
440
+ :error => '0',
441
+ :float => '0',
442
+ :global_variable => '38;5;81;4',
443
+ :integer => '38;5;64;48;5;208',
444
+ :inline_delimiter => '0',
445
+ :instance_variable => '0',
446
+ :keyword => '0',
447
+ :method => '0',
448
+ :predefined_constant => '0',
449
+ :symbol => '0',
450
+ :regexp => {
451
+ :self => '0',
452
+ :char => '0',
453
+ :content => '0',
454
+ :delimiter => '0',
455
+ :modifier => '38;5;148',
456
+ :escape => '0',
457
+ },
458
+ :shell => {
459
+ :self => '0',
460
+ :char => '0',
461
+ :content => '0',
462
+ :delimiter => '0',
463
+ :escape => '0',
464
+ },
465
+ :string => {
466
+ :self => '38;5;186',
467
+ :char => '0',
468
+ :content => '0',
469
+ :delimiter => '0',
470
+ :escape => '0',
471
+ }
472
+ }
473
+ end
474
+
475
+ it "represents theme definition as a hash" do
476
+ theme = PryTheme.create{
477
+ define_theme{
478
+ class_(:bg => 'viridian')
479
+ integer('olive_drab', 'tangerine')
480
+ global_variable('sky01', [:underline])
481
+ string{ self_('flax') }
482
+ regexp{ modifier('lime01') } } }
483
+ theme.to_coderay.should == @coderay_hash
484
+ end
485
+ end
486
+ end
@@ -0,0 +1,49 @@
1
+ t = PryTheme.create :name => 'github' do
2
+ author :name => 'John Mair'
3
+ author :name => 'Kyrylo Silin', :email => 'kyrylosilin@gmail.com'
4
+ description 'Based on GitHub theme'
5
+
6
+ define_theme do
7
+ class_ 'seroburomalinovyj01', [:bold]
8
+ class_variable 'teal01'
9
+ comment 'gray01'
10
+ constant 'teal'
11
+ error 'bismarck_furious', 'periwinkle'
12
+ float 'teal01'
13
+ global_variable 'teal01'
14
+ inline_delimiter 'cerise01'
15
+ instance_variable 'teal01'
16
+ integer 'teal01'
17
+ keyword 'black', [:bold]
18
+ method 'maroon', [:bold]
19
+ predefined_constant 'teal01'
20
+ symbol 'violet_eggplant01'
21
+
22
+ regexp do
23
+ self_ 'toad_in_love01'
24
+ char 'toad_in_love01'
25
+ content 'toad_in_love01'
26
+ delimiter 'toad_in_love01'
27
+ modifier 'toad_in_love01'
28
+ escape 'toad_in_love01'
29
+ end
30
+
31
+ shell do
32
+ self_ 'cerise01'
33
+ char 'cerise01'
34
+ content 'cerise01'
35
+ delimiter 'cerise01'
36
+ escape 'cerise01'
37
+ end
38
+
39
+ string do
40
+ self_ 'cerise01'
41
+ char 'cerise01'
42
+ content 'cerise01'
43
+ delimiter 'cerise01'
44
+ escape 'cerise01'
45
+ end
46
+ end
47
+ end
48
+
49
+ PryTheme::ThemeList.add_theme(t)
@@ -0,0 +1,48 @@
1
+ t = PryTheme.create :name => 'monokai' do
2
+ author :name => 'Kyrylo Silin', :email => 'kyrylosilin@gmail.com'
3
+ description "Based on Wimer Hazenberg's theme"
4
+
5
+ define_theme do
6
+ class_ 'sky01'
7
+ class_variable 'white'
8
+ comment 'pale_mauve01'
9
+ constant 'sky01'
10
+ error 'crimson', [:italic]
11
+ float 'amethyst01'
12
+ global_variable 'white'
13
+ inline_delimiter 'white'
14
+ instance_variable 'white'
15
+ integer 'amethyst01'
16
+ keyword 'crimson'
17
+ method 'lime01'
18
+ predefined_constant 'sky01'
19
+ symbol 'amethyst01'
20
+
21
+ regexp do
22
+ self_ 'flax'
23
+ char 'white'
24
+ content 'flax'
25
+ delimiter 'flax'
26
+ modifier 'flax'
27
+ escape 'white'
28
+ end
29
+
30
+ shell do
31
+ self_ 'flax'
32
+ char 'white'
33
+ content 'flax'
34
+ delimiter 'flax'
35
+ escape 'white'
36
+ end
37
+
38
+ string do
39
+ self_ 'flax'
40
+ char 'white'
41
+ content 'flax'
42
+ delimiter 'flax'
43
+ escape 'white'
44
+ end
45
+ end
46
+ end
47
+
48
+ PryTheme::ThemeList.add_theme(t)
@@ -0,0 +1,48 @@
1
+ t = PryTheme.create :name => 'pry-classic-16', :color_model => 16 do
2
+ author :name => 'Kyrylo Silin', :email => 'kyrylosilin@gmail.com'
3
+ description 'The default Pry Theme for terminals with average color support'
4
+
5
+ define_theme do
6
+ class_ 'bright_magenta'
7
+ class_variable 'bright_blue'
8
+ comment 'blue'
9
+ constant 'bright_blue'
10
+ error 'bright_yellow', 'red'
11
+ float 'bright_magenta'
12
+ global_variable 'green'
13
+ inline_delimiter 'red'
14
+ instance_variable 'bright_blue'
15
+ integer 'bright_blue'
16
+ keyword 'bright_red'
17
+ method 'bright_blue'
18
+ predefined_constant 'bright_cyan'
19
+ symbol 'bright_green'
20
+
21
+ regexp do
22
+ self_ 'red'
23
+ char 'red'
24
+ content 'red'
25
+ delimiter 'bright_red'
26
+ modifier 'bright_magenta'
27
+ escape 'red'
28
+ end
29
+
30
+ shell do
31
+ self_ 'green'
32
+ char 'green'
33
+ content 'bright_green'
34
+ delimiter 'bright_green'
35
+ escape 'green'
36
+ end
37
+
38
+ string do
39
+ self_ 'green'
40
+ char 'green'
41
+ content 'bright_green'
42
+ delimiter 'bright_green'
43
+ escape 'green'
44
+ end
45
+ end
46
+ end
47
+
48
+ PryTheme::ThemeList.add_theme(t)
@@ -0,0 +1,48 @@
1
+ t = PryTheme.create :name => 'pry-classic-256' do
2
+ author :name => 'Kyrylo Silin', :email => 'kyrylosilin@gmail.com'
3
+ description 'The default Pry Theme'
4
+
5
+ define_theme do
6
+ class_ 'pale_red_violet03', [:bold]
7
+ class_variable 'cerulean_grey02'
8
+ comment 'wisteria02'
9
+ constant 'blue'
10
+ error 'yellow', 'red'
11
+ float 'magenta'
12
+ global_variable 'lime02'
13
+ inline_delimiter 'red'
14
+ instance_variable 'cerulean_grey02'
15
+ integer 'blue'
16
+ keyword 'red'
17
+ method 'blue', [:bold]
18
+ predefined_constant 'robin_egg_blue04'
19
+ symbol 'green'
20
+
21
+ regexp do
22
+ self_ 'red'
23
+ char 'pale_red_violet03'
24
+ content 'eggplant02'
25
+ delimiter 'red', [:bold]
26
+ modifier 'magenta', [:underline]
27
+ escape 'red'
28
+ end
29
+
30
+ shell do
31
+ self_ 'green'
32
+ char 'dark_spring_green'
33
+ content 'green'
34
+ delimiter 'green', [:bold]
35
+ escape 'dark_spring_green'
36
+ end
37
+
38
+ string do
39
+ self_ 'green'
40
+ char 'dark_spring_green'
41
+ content 'green'
42
+ delimiter 'green', [:bold]
43
+ escape 'dark_spring_green'
44
+ end
45
+ end
46
+ end
47
+
48
+ PryTheme::ThemeList.add_theme(t)