ruby-enum 1.0.0 → 1.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 (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/Dangerfile +2 -0
  4. data/Gemfile +6 -5
  5. data/Gemfile.lock +128 -93
  6. data/README.md +37 -4
  7. data/RELEASING.md +14 -5
  8. data/Rakefile +10 -0
  9. data/UPGRADING.md +39 -0
  10. data/benchmarks/basic.rb +61 -0
  11. data/benchmarks/inheritance.rb +53 -0
  12. data/lib/ruby-enum/enum.rb +65 -25
  13. data/lib/ruby-enum/errors/base.rb +2 -2
  14. data/lib/ruby-enum/version.rb +1 -1
  15. data/pkg/ruby-enum-0.8.0.gem +0 -0
  16. data/pkg/ruby-enum-0.9.0.gem +0 -0
  17. data/pkg/ruby-enum-1.1.0.gem +0 -0
  18. data/spec/ruby-enum/enum/case_spec.rb +35 -34
  19. data/spec/ruby-enum/enum_spec.rb +212 -39
  20. data/spec/spec_helper.rb +2 -2
  21. data/spec_i18n/Gemfile.lock +26 -16
  22. data/spec_i18n/spec/i18n_spec.rb +9 -7
  23. metadata +8 -33
  24. data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc.png +0 -0
  25. data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc_disabled.png +0 -0
  26. data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_both.png +0 -0
  27. data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_desc.png +0 -0
  28. data/coverage/assets/0.12.3/DataTables-1.10.20/images/sort_desc_disabled.png +0 -0
  29. data/coverage/assets/0.12.3/application.css +0 -1
  30. data/coverage/assets/0.12.3/application.js +0 -7
  31. data/coverage/assets/0.12.3/colorbox/border.png +0 -0
  32. data/coverage/assets/0.12.3/colorbox/controls.png +0 -0
  33. data/coverage/assets/0.12.3/colorbox/loading.gif +0 -0
  34. data/coverage/assets/0.12.3/colorbox/loading_background.png +0 -0
  35. data/coverage/assets/0.12.3/favicon_green.png +0 -0
  36. data/coverage/assets/0.12.3/favicon_red.png +0 -0
  37. data/coverage/assets/0.12.3/favicon_yellow.png +0 -0
  38. data/coverage/assets/0.12.3/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  39. data/coverage/assets/0.12.3/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  40. data/coverage/assets/0.12.3/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  41. data/coverage/assets/0.12.3/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  42. data/coverage/assets/0.12.3/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  43. data/coverage/assets/0.12.3/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  44. data/coverage/assets/0.12.3/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  45. data/coverage/assets/0.12.3/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  46. data/coverage/assets/0.12.3/images/ui-icons_222222_256x240.png +0 -0
  47. data/coverage/assets/0.12.3/images/ui-icons_2e83ff_256x240.png +0 -0
  48. data/coverage/assets/0.12.3/images/ui-icons_454545_256x240.png +0 -0
  49. data/coverage/assets/0.12.3/images/ui-icons_888888_256x240.png +0 -0
  50. data/coverage/assets/0.12.3/images/ui-icons_cd0a0a_256x240.png +0 -0
  51. data/coverage/assets/0.12.3/loading.gif +0 -0
  52. data/coverage/assets/0.12.3/magnify.png +0 -0
  53. data/coverage/index.html +0 -8785
@@ -2,22 +2,35 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- class Colors
6
- include Ruby::Enum
5
+ describe Ruby::Enum do
6
+ class Colors
7
+ include Ruby::Enum
7
8
 
8
- define :RED, 'red'
9
- define :GREEN, 'green'
10
- end
9
+ define :RED, 'red'
10
+ define :GREEN, 'green'
11
+ end
11
12
 
12
- class FirstSubclass < Colors
13
- define :ORANGE, 'orange'
14
- end
13
+ class FirstSubclass < Colors
14
+ define :ORANGE, 'orange'
15
+ end
15
16
 
16
- class SecondSubclass < FirstSubclass
17
- define :PINK, 'pink'
18
- end
17
+ class SecondSubclass < FirstSubclass
18
+ define :PINK, 'pink'
19
+ end
20
+
21
+ class OtherSecondSubclass < FirstSubclass
22
+ include Ruby::Enum
23
+
24
+ define :MAGENTA, 'magenta'
25
+ end
26
+
27
+ class SubclassWithNoOwnDefines < Colors
28
+ end
29
+
30
+ class SubclassRedefiningParentKey < Colors
31
+ define :RED, 'crimson'
32
+ end
19
33
 
20
- describe Ruby::Enum do
21
34
  it 'returns an enum value' do
22
35
  expect(Colors::RED).to eq 'red'
23
36
  expect(Colors::GREEN).to eq 'green'
@@ -57,6 +70,13 @@ describe Ruby::Enum do
57
70
  expect(enum_keys).to eq %i[RED GREEN]
58
71
  expect(enum_values).to eq %w[red green]
59
72
  end
73
+
74
+ context 'when a subclass defines its own enums' do
75
+ it 'iterates over the enums defined in the parent class too' do
76
+ keys = FirstSubclass.map { |key, _enum| key }
77
+ expect(keys).to eq %i[RED GREEN ORANGE]
78
+ end
79
+ end
60
80
  end
61
81
 
62
82
  describe '#map' do
@@ -86,6 +106,12 @@ describe Ruby::Enum do
86
106
  it 'returns nil for an invalid value' do
87
107
  expect(Colors.parse('invalid')).to be_nil
88
108
  end
109
+
110
+ context 'when a subclass defines its own enums' do
111
+ it 'parses a value defined in the parent class' do
112
+ expect(FirstSubclass.parse('red')).to eq('red')
113
+ end
114
+ end
89
115
  end
90
116
 
91
117
  describe '#key?' do
@@ -104,6 +130,12 @@ describe Ruby::Enum do
104
130
  it 'returns false for invalid keys' do
105
131
  expect(Colors.key?(:NOT_A_KEY)).to be(false)
106
132
  end
133
+
134
+ context 'when a subclass defines its own enums' do
135
+ it 'returns true for keys inherited from the parent class' do
136
+ expect(FirstSubclass.key?(:RED)).to be(true)
137
+ end
138
+ end
107
139
  end
108
140
 
109
141
  describe '#value' do
@@ -116,6 +148,12 @@ describe Ruby::Enum do
116
148
  it 'returns nil for an invalid key' do
117
149
  expect(Colors.value(:NOT_A_KEY)).to be_nil
118
150
  end
151
+
152
+ context 'when a subclass defines its own enums' do
153
+ it 'returns the value for a key inherited from the parent class' do
154
+ expect(FirstSubclass.value(:RED)).to eq('red')
155
+ end
156
+ end
119
157
  end
120
158
 
121
159
  describe '#value?' do
@@ -134,6 +172,12 @@ describe Ruby::Enum do
134
172
  it 'returns false for invalid values' do
135
173
  expect(Colors.value?('I am not a value')).to be(false)
136
174
  end
175
+
176
+ context 'when a subclass defines its own enums' do
177
+ it 'returns true for values inherited from the parent class' do
178
+ expect(FirstSubclass.value?('red')).to be(true)
179
+ end
180
+ end
137
181
  end
138
182
 
139
183
  describe '#key' do
@@ -146,24 +190,66 @@ describe Ruby::Enum do
146
190
  it 'returns nil for an invalid value' do
147
191
  expect(Colors.key('invalid')).to be_nil
148
192
  end
193
+
194
+ context 'when a subclass defines its own enums' do
195
+ it 'returns the key for a value inherited from the parent class' do
196
+ expect(FirstSubclass.key('red')).to eq(:RED)
197
+ end
198
+ end
149
199
  end
150
200
 
151
201
  describe '#keys' do
152
202
  it 'returns keys' do
153
203
  expect(Colors.keys).to eq(%i[RED GREEN])
154
204
  end
205
+
206
+ context 'when a subclass defines its own enums' do
207
+ it 'includes keys from the parent class' do
208
+ expect(FirstSubclass.keys).to eq(%i[RED GREEN ORANGE])
209
+ end
210
+ end
155
211
  end
156
212
 
157
213
  describe '#values' do
158
214
  it 'returns values' do
159
215
  expect(Colors.values).to eq(%w[red green])
160
216
  end
217
+
218
+ context 'when a subclass is defined' do
219
+ it 'returns all values' do
220
+ expect(FirstSubclass.values).to eq(%w[red green orange])
221
+ end
222
+ end
223
+
224
+ context 'when a subclass of a subclass is defined' do
225
+ it 'returns all values' do
226
+ expect(SecondSubclass.values).to eq(%w[red green orange pink])
227
+ end
228
+ end
229
+
230
+ context 'when a subclass of a subclass is defined with redundant module inclusion' do
231
+ it 'returns all values' do
232
+ expect(OtherSecondSubclass.values).to eq(%w[red green orange magenta])
233
+ end
234
+ end
235
+
236
+ context 'when a subclass defines no enums of its own' do
237
+ it 'returns the values from the parent class' do
238
+ expect(SubclassWithNoOwnDefines.values).to eq(%w[red green])
239
+ end
240
+ end
161
241
  end
162
242
 
163
243
  describe '#to_h' do
164
244
  it 'returns a hash of key:values' do
165
245
  expect(Colors.to_h).to eq(RED: 'red', GREEN: 'green')
166
246
  end
247
+
248
+ context 'when a subclass defines its own enums' do
249
+ it 'includes key:values from the parent class' do
250
+ expect(FirstSubclass.to_h).to eq(RED: 'red', GREEN: 'green', ORANGE: 'orange')
251
+ end
252
+ end
167
253
  end
168
254
 
169
255
  context 'when a duplicate key is used' do
@@ -218,6 +304,47 @@ describe Ruby::Enum do
218
304
  end
219
305
  end
220
306
 
307
+ describe 'Reloading enum definition' do
308
+ it 'can be lazy reloaded' do
309
+ class_body = proc do
310
+ include Ruby::Enum
311
+
312
+ define :BUZZ_CUT, 'buzz_cut'
313
+ end
314
+
315
+ hair_styles = Class.new(&class_body)
316
+
317
+ expect { hair_styles.class_eval(&class_body) }.not_to raise_error
318
+ end
319
+
320
+ context 'when a subclass is defined' do
321
+ it 'NEEDS to include Ruby::Enum explicitly to be lazy reloaded' do
322
+ hair_styles = Class.new do
323
+ include Ruby::Enum
324
+
325
+ define :BUZZ_CUT, 'buzz_cut'
326
+ end
327
+
328
+ broken_subclass_body = proc do
329
+ define :PONYTAIL, 'ponytail'
330
+ end
331
+ broken_subclass = Class.new(hair_styles, &broken_subclass_body)
332
+ expect { broken_subclass.class_eval(&broken_subclass_body) }
333
+ .to raise_error Ruby::Enum::Errors::DuplicateKeyError, /PONYTAIL/
334
+
335
+ subclass_body = proc do
336
+ include Ruby::Enum
337
+
338
+ define :PONYTAIL, 'ponytail'
339
+ end
340
+ more_hair_styles = Class.new(hair_styles, &subclass_body)
341
+
342
+ expect { more_hair_styles.class_eval(&subclass_body) }.not_to raise_error
343
+ expect(more_hair_styles.values).to eq(%w[buzz_cut ponytail])
344
+ end
345
+ end
346
+ end
347
+
221
348
  describe 'Given a class that has not defined any enums' do
222
349
  class EmptyEnums
223
350
  include Ruby::Enum
@@ -250,29 +377,76 @@ describe Ruby::Enum do
250
377
  end
251
378
 
252
379
  context 'when defining a 2 level depth subclass' do
253
- subject { SecondSubclass }
254
-
255
380
  it 'contains its own enums and all the enums defined in the parent classes' do
256
- expect(subject::RED).to eq 'red'
257
- expect(subject::GREEN).to eq 'green'
258
- expect(subject::ORANGE).to eq 'orange'
259
- expect(subject::PINK).to eq 'pink'
381
+ expect(SecondSubclass::RED).to eq 'red'
382
+ expect(SecondSubclass::GREEN).to eq 'green'
383
+ expect(SecondSubclass::ORANGE).to eq 'orange'
384
+ expect(SecondSubclass::PINK).to eq 'pink'
260
385
  end
261
386
 
262
387
  describe '#values' do
263
- subject { SecondSubclass.values }
264
-
265
388
  it 'contains the values from all of the parent classes' do
266
- expect(subject).to eq(%w[red green orange pink])
389
+ expect(SecondSubclass.values).to eq(%w[red green orange pink])
267
390
  end
268
391
  end
269
392
  end
270
393
 
271
394
  describe '#values' do
272
- subject { FirstSubclass.values }
273
-
274
395
  it 'contains the values from the parent class' do
275
- expect(subject).to eq(%w[red green orange])
396
+ expect(FirstSubclass.values).to eq(%w[red green orange])
397
+ end
398
+ end
399
+
400
+ context 'when a subclass defines no enums of its own (issue #49)' do
401
+ it 'inherits the parent class enums via constants' do
402
+ expect(SubclassWithNoOwnDefines::RED).to eq 'red'
403
+ expect(SubclassWithNoOwnDefines::GREEN).to eq 'green'
404
+ end
405
+
406
+ it 'inherits the parent class values' do
407
+ expect(SubclassWithNoOwnDefines.values).to eq(%w[red green])
408
+ end
409
+
410
+ it 'inherits the parent class enums for keys, key?, value?, key, value, to_h, parse and each' do
411
+ expect(SubclassWithNoOwnDefines.keys).to eq(%i[RED GREEN])
412
+ expect(SubclassWithNoOwnDefines.key?(:RED)).to be true
413
+ expect(SubclassWithNoOwnDefines.value?('red')).to be true
414
+ expect(SubclassWithNoOwnDefines.key('red')).to eq :RED
415
+ expect(SubclassWithNoOwnDefines.value(:RED)).to eq 'red'
416
+ expect(SubclassWithNoOwnDefines.to_h).to eq(RED: 'red', GREEN: 'green')
417
+ expect(SubclassWithNoOwnDefines.parse('red')).to eq 'red'
418
+ expect(SubclassWithNoOwnDefines.each.map { |key, _enum| key }).to eq(%i[RED GREEN])
419
+ end
420
+ end
421
+
422
+ context 'when a subclass redefines a key already used by a parent class' do
423
+ it 'does not raise a duplicate key error' do
424
+ expect(SubclassRedefiningParentKey::RED).to eq 'crimson'
425
+ end
426
+
427
+ it "the subclass' own value takes precedence" do
428
+ expect(SubclassRedefiningParentKey.value(:RED)).to eq 'crimson'
429
+ end
430
+
431
+ it "the subclass' own value is used in to_h" do
432
+ expect(SubclassRedefiningParentKey.to_h).to eq(RED: 'crimson', GREEN: 'green')
433
+ end
434
+
435
+ it 'includes both the parent and its own redefined value in values' do
436
+ expect(SubclassRedefiningParentKey.values).to eq(%w[red green crimson])
437
+ end
438
+
439
+ it "the parent class' own value is unaffected" do
440
+ expect(Colors::RED).to eq 'red'
441
+ expect(Colors.value(:RED)).to eq 'red'
442
+ end
443
+
444
+ it 'still allows the parent class to raise a duplicate key error for its own re-definitions' do
445
+ expect do
446
+ Colors.class_eval do
447
+ define :RED, 'red'
448
+ end
449
+ end.to raise_error Ruby::Enum::Errors::DuplicateKeyError, /RED/
276
450
  end
277
451
  end
278
452
  end
@@ -280,41 +454,40 @@ describe Ruby::Enum do
280
454
  describe 'default value' do
281
455
  class Default
282
456
  include Ruby::Enum
457
+
283
458
  define :KEY
284
459
  end
285
460
 
286
- subject { Default::KEY }
287
-
288
461
  it 'equals the key' do
289
- expect(subject).to eq(:KEY)
462
+ expect(Default::KEY).to eq(:KEY)
290
463
  end
291
464
  end
292
465
 
293
466
  describe 'non constant definitions' do
294
467
  class States
295
468
  include Ruby::Enum
469
+
296
470
  define :created, 'Created'
297
471
  define :published, 'Published'
298
472
  define :undefined
299
473
  end
300
- subject { States }
301
474
 
302
475
  it 'behaves like an enum' do
303
- expect(subject.created).to eq 'Created'
304
- expect(subject.published).to eq 'Published'
305
- expect(subject.undefined).to eq :undefined
476
+ expect(States.created).to eq 'Created'
477
+ expect(States.published).to eq 'Published'
478
+ expect(States.undefined).to eq :undefined
306
479
 
307
- expect(subject.key?(:created)).to be true
308
- expect(subject.key('Created')).to eq :created
480
+ expect(States.key?(:created)).to be true
481
+ expect(States.key('Created')).to eq :created
309
482
 
310
- expect(subject.value?('Created')).to be true
311
- expect(subject.value(:created)).to eq 'Created'
483
+ expect(States.value?('Created')).to be true
484
+ expect(States.value(:created)).to eq 'Created'
312
485
 
313
- expect(subject.key?(:undefined)).to be true
314
- expect(subject.key(:undefined)).to eq :undefined
486
+ expect(States.key?(:undefined)).to be true
487
+ expect(States.key(:undefined)).to eq :undefined
315
488
 
316
- expect(subject.value?(:undefined)).to be true
317
- expect(subject.value(:undefined)).to eq :undefined
489
+ expect(States.value?(:undefined)).to be true
490
+ expect(States.value(:undefined)).to eq :undefined
318
491
  end
319
492
  end
320
493
  end
data/spec/spec_helper.rb CHANGED
@@ -4,8 +4,8 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
4
 
5
5
  require 'rubygems'
6
6
 
7
- require 'simplecov'
8
- SimpleCov.start
7
+ require 'coveralls'
8
+ Coveralls.wear!
9
9
 
10
10
  require 'rspec'
11
11
  require 'ruby-enum'
@@ -1,29 +1,29 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- ruby-enum (1.0.0)
4
+ ruby-enum (1.2.0)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
- diff-lcs (1.5.0)
10
- rake (13.1.0)
11
- rspec (3.12.0)
12
- rspec-core (~> 3.12.0)
13
- rspec-expectations (~> 3.12.0)
14
- rspec-mocks (~> 3.12.0)
15
- rspec-core (3.12.2)
16
- rspec-support (~> 3.12.0)
17
- rspec-expectations (3.12.3)
9
+ diff-lcs (1.6.2)
10
+ rake (13.4.2)
11
+ rspec (3.13.2)
12
+ rspec-core (~> 3.13.0)
13
+ rspec-expectations (~> 3.13.0)
14
+ rspec-mocks (~> 3.13.0)
15
+ rspec-core (3.13.6)
16
+ rspec-support (~> 3.13.0)
17
+ rspec-expectations (3.13.5)
18
18
  diff-lcs (>= 1.2.0, < 2.0)
19
- rspec-support (~> 3.12.0)
20
- rspec-mocks (3.12.6)
19
+ rspec-support (~> 3.13.0)
20
+ rspec-mocks (3.13.8)
21
21
  diff-lcs (>= 1.2.0, < 2.0)
22
- rspec-support (~> 3.12.0)
23
- rspec-support (3.12.1)
22
+ rspec-support (~> 3.13.0)
23
+ rspec-support (3.13.7)
24
24
 
25
25
  PLATFORMS
26
- arm64-darwin-22
26
+ arm64-darwin-23
27
27
  ruby
28
28
 
29
29
  DEPENDENCIES
@@ -31,5 +31,15 @@ DEPENDENCIES
31
31
  rspec (~> 3.0)
32
32
  ruby-enum!
33
33
 
34
+ CHECKSUMS
35
+ diff-lcs (1.6.2)
36
+ rake (13.4.2)
37
+ rspec (3.13.2)
38
+ rspec-core (3.13.6)
39
+ rspec-expectations (3.13.5)
40
+ rspec-mocks (3.13.8)
41
+ rspec-support (3.13.7)
42
+ ruby-enum (1.2.0)
43
+
34
44
  BUNDLED WITH
35
- 2.5.1
45
+ 4.0.6
@@ -2,18 +2,20 @@
2
2
 
3
3
  require 'spec_helper'
4
4
 
5
- test_class = Class.new do
6
- include Ruby::Enum
5
+ module I18n
6
+ class Colors
7
+ include Ruby::Enum
7
8
 
8
- define :RED, 'red'
9
- define :GREEN, 'green'
9
+ define :RED, 'red'
10
+ define :GREEN, 'green'
11
+ end
10
12
  end
11
13
 
12
14
  describe Ruby::Enum do
13
15
  context 'when the i18n gem is not loaded' do
14
16
  it 'raises UninitializedConstantError on an invalid constant' do
15
17
  expect do
16
- test_class::ANYTHING
18
+ I18n::Colors::ANYTHING
17
19
  end.to raise_error Ruby::Enum::Errors::UninitializedConstantError, /ruby.enum.errors.messages.uninitialized_constant.summary/
18
20
  end
19
21
 
@@ -24,7 +26,7 @@ describe Ruby::Enum do
24
26
 
25
27
  it 'raises DuplicateKeyError' do
26
28
  expect do
27
- test_class.class_eval do
29
+ I18n::Colors.class_eval do
28
30
  define :RED, 'some'
29
31
  end
30
32
  end.to raise_error Ruby::Enum::Errors::DuplicateKeyError, /ruby.enum.errors.messages.duplicate_key.message/
@@ -38,7 +40,7 @@ describe Ruby::Enum do
38
40
 
39
41
  it 'raises a DuplicateValueError' do
40
42
  expect do
41
- test_class.class_eval do
43
+ I18n::Colors.class_eval do
42
44
  define :Other, 'red'
43
45
  end
44
46
  end.to raise_error Ruby::Enum::Errors::DuplicateValueError, /ruby.enum.errors.messages.duplicate_value.summary/
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Doubrovkine
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-10 00:00:00.000000000 Z
11
+ date: 2026-08-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email: dblock@dblock.org
@@ -26,37 +26,9 @@ files:
26
26
  - RELEASING.md
27
27
  - Rakefile
28
28
  - UPGRADING.md
29
+ - benchmarks/basic.rb
29
30
  - benchmarks/case.rb
30
- - coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc.png
31
- - coverage/assets/0.12.3/DataTables-1.10.20/images/sort_asc_disabled.png
32
- - coverage/assets/0.12.3/DataTables-1.10.20/images/sort_both.png
33
- - coverage/assets/0.12.3/DataTables-1.10.20/images/sort_desc.png
34
- - coverage/assets/0.12.3/DataTables-1.10.20/images/sort_desc_disabled.png
35
- - coverage/assets/0.12.3/application.css
36
- - coverage/assets/0.12.3/application.js
37
- - coverage/assets/0.12.3/colorbox/border.png
38
- - coverage/assets/0.12.3/colorbox/controls.png
39
- - coverage/assets/0.12.3/colorbox/loading.gif
40
- - coverage/assets/0.12.3/colorbox/loading_background.png
41
- - coverage/assets/0.12.3/favicon_green.png
42
- - coverage/assets/0.12.3/favicon_red.png
43
- - coverage/assets/0.12.3/favicon_yellow.png
44
- - coverage/assets/0.12.3/images/ui-bg_flat_0_aaaaaa_40x100.png
45
- - coverage/assets/0.12.3/images/ui-bg_flat_75_ffffff_40x100.png
46
- - coverage/assets/0.12.3/images/ui-bg_glass_55_fbf9ee_1x400.png
47
- - coverage/assets/0.12.3/images/ui-bg_glass_65_ffffff_1x400.png
48
- - coverage/assets/0.12.3/images/ui-bg_glass_75_dadada_1x400.png
49
- - coverage/assets/0.12.3/images/ui-bg_glass_75_e6e6e6_1x400.png
50
- - coverage/assets/0.12.3/images/ui-bg_glass_95_fef1ec_1x400.png
51
- - coverage/assets/0.12.3/images/ui-bg_highlight-soft_75_cccccc_1x100.png
52
- - coverage/assets/0.12.3/images/ui-icons_222222_256x240.png
53
- - coverage/assets/0.12.3/images/ui-icons_2e83ff_256x240.png
54
- - coverage/assets/0.12.3/images/ui-icons_454545_256x240.png
55
- - coverage/assets/0.12.3/images/ui-icons_888888_256x240.png
56
- - coverage/assets/0.12.3/images/ui-icons_cd0a0a_256x240.png
57
- - coverage/assets/0.12.3/loading.gif
58
- - coverage/assets/0.12.3/magnify.png
59
- - coverage/index.html
31
+ - benchmarks/inheritance.rb
60
32
  - lib/config/locales/en.yml
61
33
  - lib/ruby-enum.rb
62
34
  - lib/ruby-enum/enum.rb
@@ -68,6 +40,9 @@ files:
68
40
  - lib/ruby-enum/errors/uninitialized_constant_error.rb
69
41
  - lib/ruby-enum/version.rb
70
42
  - lib/ruby_enum.rb
43
+ - pkg/ruby-enum-0.8.0.gem
44
+ - pkg/ruby-enum-0.9.0.gem
45
+ - pkg/ruby-enum-1.1.0.gem
71
46
  - ruby-enum.gemspec
72
47
  - spec/ruby-enum/enum/case_spec.rb
73
48
  - spec/ruby-enum/enum_spec.rb
@@ -98,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
73
  - !ruby/object:Gem::Version
99
74
  version: 1.3.6
100
75
  requirements: []
101
- rubygems_version: 3.5.1
76
+ rubygems_version: 3.5.16
102
77
  signing_key:
103
78
  specification_version: 4
104
79
  summary: Enum-like behavior for Ruby.
@@ -1 +0,0 @@
1
- html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,code,del,dfn,em,img,q,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,dialog,figure,footer,header,hgroup,nav,section{margin:0;padding:0;border:0;font-weight:inherit;font-style:inherit;font-size:100%;font-family:inherit;vertical-align:baseline}article,aside,dialog,figure,footer,header,hgroup,nav,section{display:block}body{line-height:1.5}table{border-collapse:separate;border-spacing:0}caption,th,td{text-align:left;font-weight:normal}table,td,th{vertical-align:middle}blockquote:before,blockquote:after,q:before,q:after{content:""}blockquote,q{quotes:"" ""}a img{border:0}html{font-size:100.01%}body{font-size:82%;color:#222;background:#fff;font-family:"Helvetica Neue",Arial,Helvetica,sans-serif}h1,h2,h3,h4,h5,h6{font-weight:normal;color:#111}h1{font-size:3em;line-height:1;margin-bottom:.5em}h2{font-size:2em;margin-bottom:.75em}h3{font-size:1.5em;line-height:1;margin-bottom:1em}h4{font-size:1.2em;line-height:1.25;margin-bottom:1.25em}h5{font-size:1em;font-weight:bold;margin-bottom:1.5em}h6{font-size:1em;font-weight:bold}h1 img,h2 img,h3 img,h4 img,h5 img,h6 img{margin:0}p{margin:0 0 1.5em}p img.left{float:left;margin:1.5em 1.5em 1.5em 0;padding:0}p img.right{float:right;margin:1.5em 0 1.5em 1.5em}a:focus,a:hover{color:#000}a{color:#009;text-decoration:underline}blockquote{margin:1.5em;color:#666;font-style:italic}strong{font-weight:bold}em,dfn{font-style:italic}dfn{font-weight:bold}sup,sub{line-height:0}abbr,acronym{border-bottom:1px dotted #666}address{margin:0 0 1.5em;font-style:italic}del{color:#666}pre{margin:1.5em 0;white-space:pre}pre,code,tt{font:1em 'andale mono','lucida console',monospace;line-height:1.5}li ul,li ol{margin:0}ul,ol{margin:0 1.5em 1.5em 0;padding-left:3.333em}ul{list-style-type:disc}ol{list-style-type:decimal}dl{margin:0 0 1.5em 0}dl dt{font-weight:bold}dd{margin-left:1.5em}table{margin-bottom:1.4em;width:100%}th{font-weight:bold}thead th{background:#c3d9ff}th,td,caption{padding:4px 10px 4px 5px}tr.even td{background:#efefef}tfoot{font-style:italic}caption{background:#eee}.small{font-size:.8em;margin-bottom:1.875em;line-height:1.875em}.large{font-size:1.2em;line-height:2.5em;margin-bottom:1.25em}.hide{display:none}.quiet{color:#666}.loud{color:#000}.highlight{background:#ff0}.added{background:#060;color:#fff}.removed{background:#900;color:#fff}.first{margin-left:0;padding-left:0}.last{margin-right:0;padding-right:0}.top{margin-top:0;padding-top:0}.bottom{margin-bottom:0;padding-bottom:0}label{font-weight:bold}fieldset{padding:1.4em;margin:0 0 1.5em 0;border:1px solid #ccc}legend{font-weight:bold;font-size:1.2em}input[type=text],input[type=password],input.text,input.title,textarea,select{background-color:#fff;border:1px solid #bbb}input[type=text]:focus,input[type=password]:focus,input.text:focus,input.title:focus,textarea:focus,select:focus{border-color:#666}input[type=text],input[type=password],input.text,input.title,textarea,select{margin:.5em 0}input.text,input.title{width:300px;padding:5px}input.title{font-size:1.5em}textarea{width:390px;height:250px;padding:5px}input[type=checkbox],input[type=radio],input.checkbox,input.radio{position:relative;top:.25em}form.inline{line-height:3}form.inline p{margin-bottom:0}.error,.notice,.success{padding:.8em;margin-bottom:1em;border:2px solid #ddd}.error{background:#fbe3e4;color:#8a1f11;border-color:#fbc2c4}.notice{background:#fff6bf;color:#514721;border-color:#ffd324}.success{background:#e6efc2;color:#264409;border-color:#c6d880}.error a{color:#8a1f11}.notice a{color:#514721}.success a{color:#264409}.box{padding:1.5em;margin-bottom:1.5em;background:#e5ecf9}hr{background:#ddd;color:#ddd;clear:both;float:none;width:100%;height:.1em;margin:0 0 1.45em;border:0}hr.space{background:#fff;color:#fff;visibility:hidden}.clearfix:after,.container:after{content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden}.clearfix,.container{display:block}.clear{clear:both}table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:0}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;*cursor:hand;background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("DataTables-1.10.20/images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("DataTables-1.10.20/images/sort_asc.png")}table.dataTable thead .sorting_desc{background-image:url("DataTables-1.10.20/images/sort_desc.png")}table.dataTable thead .sorting_asc_disabled{background-image:url("DataTables-1.10.20/images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("DataTables-1.10.20/images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:0}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:0}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px 4px 4px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,white),color-stop(100%,#dcdcdc));background:-webkit-linear-gradient(top,white 0,#dcdcdc 100%);background:-moz-linear-gradient(top,white 0,#dcdcdc 100%);background:-ms-linear-gradient(top,white 0,#dcdcdc 100%);background:-o-linear-gradient(top,white 0,#dcdcdc 100%);background:linear-gradient(to bottom,white 0,#dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#585858),color-stop(100%,#111));background:-webkit-linear-gradient(top,#585858 0,#111 100%);background:-moz-linear-gradient(top,#585858 0,#111 100%);background:-ms-linear-gradient(top,#585858 0,#111 100%);background:-o-linear-gradient(top,#585858 0,#111 100%);background:linear-gradient(to bottom,#585858 0,#111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:0;background-color:#2b2b2b;background:-webkit-gradient(linear,left top,left bottom,color-stop(0,#2b2b2b),color-stop(100%,#0c0c0c));background:-webkit-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:-moz-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:-ms-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:-o-linear-gradient(top,#2b2b2b 0,#0c0c0c 100%);background:linear-gradient(to bottom,#2b2b2b 0,#0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,0.9)),color-stop(75%,rgba(255,255,255,0.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,0.9) 25%,rgba(255,255,255,0.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:0}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width:767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:.5em}}@media screen and (max-width:640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:.5em}}pre .comment,pre .template_comment,pre .diff .header,pre .javadoc{color:#998;font-style:italic}pre .keyword,pre .css .rule .keyword,pre .winutils,pre .javascript .title,pre .lisp .title{color:#000;font-weight:bold}pre .number,pre .hexcolor{color:#458}pre .string,pre .tag .value,pre .phpdoc,pre .tex .formula{color:#d14}pre .subst{color:#712}pre .constant,pre .title,pre .id{color:#900;font-weight:bold}pre .javascript .title,pre .lisp .title,pre .subst{font-weight:normal}pre .class .title,pre .haskell .label,pre .tex .command{color:#458;font-weight:bold}pre .tag,pre .tag .title,pre .rules .property,pre .django .tag .keyword{color:navy;font-weight:normal}pre .attribute,pre .variable,pre .instancevar,pre .lisp .body{color:teal}pre .regexp{color:#009926}pre .class{color:#458;font-weight:bold}pre .symbol,pre .ruby .symbol .string,pre .ruby .symbol .keyword,pre .ruby .symbol .keymethods,pre .lisp .keyword,pre .tex .special,pre .input_number{color:#990073}pre .builtin,pre .built_in,pre .lisp .title{color:#0086b3}pre .preprocessor,pre .pi,pre .doctype,pre .shebang,pre .cdata{color:#999;font-weight:bold}pre .deletion{background:#fdd}pre .addition{background:#dfd}pre .diff .change{background:#0086b3}pre .chunk{color:#aaa}pre .tex .formula{opacity:.5}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{position:absolute;left:-99999999px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}.ui-helper-clearfix{display:inline-block}/*\*/* html .ui-helper-clearfix{height:1%}.ui-helper-clearfix{display:block}/**/.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-state-disabled{cursor:default !important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:absolute;top:0;left:0;width:100%;height:100%}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-widget :active{outline:0}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-off{background-position:-96px -144px}.ui-icon-radio-on{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px}.ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-corner-top{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px}.ui-corner-bottom{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-corner-right{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.ui-corner-left{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.ui-corner-all{-moz-border-radius:4px;-webkit-border-radius:4px;border-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.30;filter:Alpha(Opacity=30);-moz-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}#colorbox,#cboxOverlay,#cboxWrapper{position:absolute;top:0;left:0;z-index:9999;overflow:hidden}#cboxOverlay{position:fixed;width:100%;height:100%}#cboxMiddleLeft,#cboxBottomLeft{clear:left}#cboxContent{position:relative}#cboxLoadedContent{overflow:auto}#cboxTitle{margin:0}#cboxLoadingOverlay,#cboxLoadingGraphic{position:absolute;top:0;left:0;width:100%;height:100%}#cboxPrevious,#cboxNext,#cboxClose,#cboxSlideshow{cursor:pointer}.cboxPhoto{float:left;margin:auto;border:0;display:block;max-width:none}.cboxIframe{width:100%;height:100%;display:block;border:0}#colorbox,#cboxContent,#cboxLoadedContent{box-sizing:content-box}#cboxOverlay{background:#000}#cboxTopLeft{width:14px;height:14px;background:url(colorbox/controls.png) no-repeat 0 0}#cboxTopCenter{height:14px;background:url(colorbox/border.png) repeat-x top left}#cboxTopRight{width:14px;height:14px;background:url(colorbox/controls.png) no-repeat -36px 0}#cboxBottomLeft{width:14px;height:43px;background:url(colorbox/controls.png) no-repeat 0 -32px}#cboxBottomCenter{height:43px;background:url(colorbox/border.png) repeat-x bottom left}#cboxBottomRight{width:14px;height:43px;background:url(colorbox/controls.png) no-repeat -36px -32px}#cboxMiddleLeft{width:14px;background:url(colorbox/controls.png) repeat-y -175px 0}#cboxMiddleRight{width:14px;background:url(colorbox/controls.png) repeat-y -211px 0}#cboxContent{background:#fff;overflow:visible}.cboxIframe{background:#fff}#cboxError{padding:50px;border:1px solid #ccc}#cboxLoadedContent{margin-bottom:5px}#cboxLoadingOverlay{background:url(colorbox/loading_background.png) no-repeat center center}#cboxLoadingGraphic{background:url(colorbox/loading.gif) no-repeat center center}#cboxTitle{position:absolute;bottom:-25px;left:0;text-align:center;width:100%;font-weight:bold;color:#7c7c7c}#cboxCurrent{position:absolute;bottom:-25px;left:58px;font-weight:bold;color:#7c7c7c}#cboxPrevious,#cboxNext,#cboxClose,#cboxSlideshow{position:absolute;bottom:-29px;background:url(colorbox/controls.png) no-repeat 0 0;width:23px;height:23px;text-indent:-9999px}#cboxPrevious{left:0;background-position:-51px -25px}#cboxPrevious:hover{background-position:-51px 0}#cboxNext{left:27px;background-position:-75px -25px}#cboxNext:hover{background-position:-75px 0}#cboxClose{right:0;background-position:-100px -25px}#cboxClose:hover{background-position:-100px 0}.cboxSlideshow_on #cboxSlideshow{background-position:-125px 0;right:27px}.cboxSlideshow_on #cboxSlideshow:hover{background-position:-150px 0}.cboxSlideshow_off #cboxSlideshow{background-position:-150px -25px;right:27px}.cboxSlideshow_off #cboxSlideshow:hover{background-position:-125px 0}#loading{position:fixed;left:40%;top:50%}a{color:#333;text-decoration:none}a:hover{color:#000;text-decoration:underline}body{font-family:"Lucida Grande",Helvetica,"Helvetica Neue",Arial,sans-serif;padding:12px;background-color:#333}h1,h2,h3,h4{color:#1c2324;margin:0;padding:0;margin-bottom:12px}table{width:100%}#content{clear:left;background-color:white;border:2px solid #ddd;border-top:8px solid #ddd;padding:18px;-webkit-border-bottom-left-radius:5px;-webkit-border-bottom-right-radius:5px;-webkit-border-top-right-radius:5px;-moz-border-radius-bottomleft:5px;-moz-border-radius-bottomright:5px;-moz-border-radius-topright:5px;border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top-right-radius:5px}.dataTables_filter,.dataTables_info{padding:2px 6px}abbr.timeago{text-decoration:none;border:0;font-weight:bold}.timestamp{float:right;color:#ddd}.group_tabs{list-style:none;float:left;margin:0;padding:0}.group_tabs li{display:inline;float:left}.group_tabs li a{font-family:Helvetica,Arial,sans-serif;display:block;float:left;text-decoration:none;padding:4px 8px;background-color:#aaa;background:-webkit-gradient(linear,0 0,0 bottom,from(#ddd),to(#aaa));background:-moz-linear-gradient(#ddd,#aaa);background:linear-gradient(#ddd,#aaa);text-shadow:#e5e5e5 1px 1px 0;border-bottom:0;color:#333;font-weight:bold;margin-right:8px;border-top:1px solid #efefef;-webkit-border-top-left-radius:2px;-webkit-border-top-right-radius:2px;-moz-border-radius-topleft:2px;-moz-border-radius-topright:2px;border-top-left-radius:2px;border-top-right-radius:2px}.group_tabs li a:hover{background-color:#ccc;background:-webkit-gradient(linear,0 0,0 bottom,from(#eee),to(#aaa));background:-moz-linear-gradient(#eee,#aaa);background:linear-gradient(#eee,#aaa)}.group_tabs li a:active{padding-top:5px;padding-bottom:3px}.group_tabs li.active a{color:black;text-shadow:#fff 1px 1px 0;background-color:#ddd;background:-webkit-gradient(linear,0 0,0 bottom,from(white),to(#ddd));background:-moz-linear-gradient(white,#ddd);background:linear-gradient(white,#ddd)}.file_list{margin-bottom:18px}.file_list--responsive{overflow-x:auto;overflow-y:hidden}a.src_link{background:url("./magnify.png") no-repeat left 50%;padding-left:18px}tr,td{margin:0;padding:0}th{white-space:nowrap}th.ui-state-default{cursor:pointer}th span.ui-icon{float:left}td{padding:4px 8px}td.strong{font-weight:bold}.cell--number{text-align:right}.source_table h3,.source_table h4{padding:0;margin:0;margin-bottom:4px}.source_table .header{padding:10px}.source_table pre{margin:0;padding:0;white-space:normal;color:#000;font-family:"Monaco","Inconsolata","Consolas",monospace}.source_table code{color:#000;font-family:"Monaco","Inconsolata","Consolas",monospace}.source_table pre{background-color:#333}.source_table pre ol{margin:0;padding:0;margin-left:45px;font-size:12px;color:white}.source_table pre li{margin:0;padding:2px 6px;border-left:5px solid white}.source_table pre li code{white-space:pre;white-space:pre-wrap}.source_table pre .hits{float:right;margin-left:10px;padding:2px 4px;background-color:#444;background:-webkit-gradient(linear,0 0,0 bottom,from(#222),to(#666));background:-moz-linear-gradient(#222,#666);background:linear-gradient(#222,#666);color:white;font-family:Helvetica,"Helvetica Neue",Arial,sans-serif;font-size:10px;font-weight:bold;text-align:center;border-radius:6px}#footer{color:#ddd;font-size:12px;font-weight:bold;margin-top:12px;text-align:right}#footer a{color:#eee;text-decoration:underline}#footer a:hover{color:#fff;text-decoration:none}.green{color:#090}.red{color:#900}.yellow{color:#da0}.blue{color:blue}thead th{background:white}.source_table .covered{border-color:#090}.source_table .missed{border-color:#900}.source_table .never{border-color:black}.source_table .skipped{border-color:#fc0}.source_table .missed-branch{border-color:#bf0000}.source_table .covered:nth-child(odd){background-color:#cdf2cd}.source_table .covered:nth-child(even){background-color:#dbf2db}.source_table .missed:nth-child(odd){background-color:#f7c0c0}.source_table .missed:nth-child(even){background-color:#f7cfcf}.source_table .never:nth-child(odd){background-color:#efefef}.source_table .never:nth-child(even){background-color:#f4f4f4}.source_table .skipped:nth-child(odd){background-color:#fbf0c0}.source_table .skipped:nth-child(even){background-color:#fbffcf}.source_table .missed-branch:nth-child(odd){background-color:#cc8e8e}.source_table .missed-branch:nth-child(even){background-color:#cc6e6e}