rack-auth-ip 0.0.2 → 0.0.3

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 (22) hide show
  1. data/ChangeLog +39 -2
  2. data/README +4 -4
  3. data/Rakefile +1 -1
  4. data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs-block_rb.html +1 -1
  5. data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs-callbacks_rb.html +1 -1
  6. data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs-change_rb.html +1 -1
  7. data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs-hunk_rb.html +1 -1
  8. data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs_rb.html +1 -1
  9. data/doc/output/coverage/-Library-Ruby-Gems-gems-rcov-0_8_1_2_0-lib-rcov_rb.html +1 -1
  10. data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-drb-drb_rb.html +1 -1
  11. data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-drb-eq_rb.html +1 -1
  12. data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-drb-invokemethod_rb.html +1 -1
  13. data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-ipaddr_rb.html +1 -1
  14. data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-pp_rb.html +1 -1
  15. data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-prettyprint_rb.html +1 -1
  16. data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-timeout_rb.html +1 -1
  17. data/doc/output/coverage/index.html +18 -45
  18. data/doc/output/coverage/lib-rack-auth-ip_rb.html +59 -47
  19. data/lib/rack/auth/ip.rb +14 -2
  20. data/spec/rack-auth-ip_spec.rb +3 -8
  21. metadata +2 -3
  22. data/doc/output/coverage/-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-forwardable_rb.html +0 -828
@@ -1,828 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'><head><title>/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/forwardable.rb - C0 code coverage information</title>
3
- <style type='text/css'>body { background-color: rgb(240, 240, 245); }</style>
4
- <style type='text/css'>span.cross-ref-title {
5
- font-size: 140%;
6
- }
7
- span.cross-ref a {
8
- text-decoration: none;
9
- }
10
- span.cross-ref {
11
- background-color:#f3f7fa;
12
- border: 1px dashed #333;
13
- margin: 1em;
14
- padding: 0.5em;
15
- overflow: hidden;
16
- }
17
- a.crossref-toggle {
18
- text-decoration: none;
19
- }
20
- span.marked0 {
21
- background-color: rgb(185, 210, 200);
22
- display: block;
23
- }
24
- span.marked1 {
25
- background-color: rgb(190, 215, 205);
26
- display: block;
27
- }
28
- span.inferred0 {
29
- background-color: rgb(175, 200, 200);
30
- display: block;
31
- }
32
- span.inferred1 {
33
- background-color: rgb(180, 205, 205);
34
- display: block;
35
- }
36
- span.uncovered0 {
37
- background-color: rgb(225, 110, 110);
38
- display: block;
39
- }
40
- span.uncovered1 {
41
- background-color: rgb(235, 120, 120);
42
- display: block;
43
- }
44
- span.overview {
45
- border-bottom: 8px solid black;
46
- }
47
- div.overview {
48
- border-bottom: 8px solid black;
49
- }
50
- body {
51
- font-family: verdana, arial, helvetica;
52
- }
53
- div.footer {
54
- font-size: 68%;
55
- margin-top: 1.5em;
56
- }
57
- h1, h2, h3, h4, h5, h6 {
58
- margin-bottom: 0.5em;
59
- }
60
- h5 {
61
- margin-top: 0.5em;
62
- }
63
- .hidden {
64
- display: none;
65
- }
66
- div.separator {
67
- height: 10px;
68
- }
69
- /* Commented out for better readability, esp. on IE */
70
- /*
71
- table tr td, table tr th {
72
- font-size: 68%;
73
- }
74
- td.value table tr td {
75
- font-size: 11px;
76
- }
77
- */
78
- table.percent_graph {
79
- height: 12px;
80
- border: #808080 1px solid;
81
- empty-cells: show;
82
- }
83
- table.percent_graph td.covered {
84
- height: 10px;
85
- background: #00f000;
86
- }
87
- table.percent_graph td.uncovered {
88
- height: 10px;
89
- background: #e00000;
90
- }
91
- table.percent_graph td.NA {
92
- height: 10px;
93
- background: #eaeaea;
94
- }
95
- table.report {
96
- border-collapse: collapse;
97
- width: 100%;
98
- }
99
- table.report td.heading {
100
- background: #dcecff;
101
- border: #d0d0d0 1px solid;
102
- font-weight: bold;
103
- text-align: center;
104
- }
105
- table.report td.heading:hover {
106
- background: #c0ffc0;
107
- }
108
- table.report td.text {
109
- border: #d0d0d0 1px solid;
110
- }
111
- table.report td.value,
112
- table.report td.lines_total,
113
- table.report td.lines_code {
114
- text-align: right;
115
- border: #d0d0d0 1px solid;
116
- }
117
- table.report tr.light {
118
- background-color: rgb(240, 240, 245);
119
- }
120
- table.report tr.dark {
121
- background-color: rgb(230, 230, 235);
122
- }
123
- </style>
124
- <script type='text/javascript'>
125
- // <![CDATA[
126
- function toggleCode( id ) {
127
- if ( document.getElementById )
128
- elem = document.getElementById( id );
129
- else if ( document.all )
130
- elem = eval( "document.all." + id );
131
- else
132
- return false;
133
-
134
- elemStyle = elem.style;
135
-
136
- if ( elemStyle.display != "block" ) {
137
- elemStyle.display = "block"
138
- } else {
139
- elemStyle.display = "none"
140
- }
141
-
142
- return true;
143
- }
144
-
145
- // Make cross-references hidden by default
146
- document.writeln( "<style type=\"text/css\">span.cross-ref { display: none }</style>" )
147
- // ]]>
148
- </script>
149
- <style type='text/css'>span.run0 {
150
- background-color: rgb(178, 204, 255);
151
- display: block;
152
- }
153
- span.run1 {
154
- background-color: rgb(178, 206, 255);
155
- display: block;
156
- }
157
- span.run2 {
158
- background-color: rgb(178, 209, 255);
159
- display: block;
160
- }
161
- span.run3 {
162
- background-color: rgb(178, 211, 255);
163
- display: block;
164
- }
165
- span.run4 {
166
- background-color: rgb(178, 214, 255);
167
- display: block;
168
- }
169
- span.run5 {
170
- background-color: rgb(178, 218, 255);
171
- display: block;
172
- }
173
- span.run6 {
174
- background-color: rgb(178, 220, 255);
175
- display: block;
176
- }
177
- span.run7 {
178
- background-color: rgb(178, 223, 255);
179
- display: block;
180
- }
181
- span.run8 {
182
- background-color: rgb(178, 225, 255);
183
- display: block;
184
- }
185
- span.run9 {
186
- background-color: rgb(178, 228, 255);
187
- display: block;
188
- }
189
- span.run10 {
190
- background-color: rgb(178, 232, 255);
191
- display: block;
192
- }
193
- span.run11 {
194
- background-color: rgb(178, 234, 255);
195
- display: block;
196
- }
197
- span.run12 {
198
- background-color: rgb(178, 237, 255);
199
- display: block;
200
- }
201
- span.run13 {
202
- background-color: rgb(178, 239, 255);
203
- display: block;
204
- }
205
- span.run14 {
206
- background-color: rgb(178, 242, 255);
207
- display: block;
208
- }
209
- span.run15 {
210
- background-color: rgb(178, 246, 255);
211
- display: block;
212
- }
213
- span.run16 {
214
- background-color: rgb(178, 248, 255);
215
- display: block;
216
- }
217
- span.run17 {
218
- background-color: rgb(178, 251, 255);
219
- display: block;
220
- }
221
- span.run18 {
222
- background-color: rgb(178, 253, 255);
223
- display: block;
224
- }
225
- span.run19 {
226
- background-color: rgb(178, 255, 253);
227
- display: block;
228
- }
229
- span.run20 {
230
- background-color: rgb(178, 255, 249);
231
- display: block;
232
- }
233
- span.run21 {
234
- background-color: rgb(178, 255, 247);
235
- display: block;
236
- }
237
- span.run22 {
238
- background-color: rgb(178, 255, 244);
239
- display: block;
240
- }
241
- span.run23 {
242
- background-color: rgb(178, 255, 242);
243
- display: block;
244
- }
245
- span.run24 {
246
- background-color: rgb(178, 255, 239);
247
- display: block;
248
- }
249
- span.run25 {
250
- background-color: rgb(178, 255, 235);
251
- display: block;
252
- }
253
- span.run26 {
254
- background-color: rgb(178, 255, 233);
255
- display: block;
256
- }
257
- span.run27 {
258
- background-color: rgb(178, 255, 230);
259
- display: block;
260
- }
261
- span.run28 {
262
- background-color: rgb(178, 255, 228);
263
- display: block;
264
- }
265
- span.run29 {
266
- background-color: rgb(178, 255, 225);
267
- display: block;
268
- }
269
- span.run30 {
270
- background-color: rgb(178, 255, 221);
271
- display: block;
272
- }
273
- span.run31 {
274
- background-color: rgb(178, 255, 219);
275
- display: block;
276
- }
277
- span.run32 {
278
- background-color: rgb(178, 255, 216);
279
- display: block;
280
- }
281
- span.run33 {
282
- background-color: rgb(178, 255, 214);
283
- display: block;
284
- }
285
- span.run34 {
286
- background-color: rgb(178, 255, 211);
287
- display: block;
288
- }
289
- span.run35 {
290
- background-color: rgb(178, 255, 207);
291
- display: block;
292
- }
293
- span.run36 {
294
- background-color: rgb(178, 255, 205);
295
- display: block;
296
- }
297
- span.run37 {
298
- background-color: rgb(178, 255, 202);
299
- display: block;
300
- }
301
- span.run38 {
302
- background-color: rgb(178, 255, 200);
303
- display: block;
304
- }
305
- span.run39 {
306
- background-color: rgb(178, 255, 197);
307
- display: block;
308
- }
309
- span.run40 {
310
- background-color: rgb(178, 255, 193);
311
- display: block;
312
- }
313
- span.run41 {
314
- background-color: rgb(178, 255, 191);
315
- display: block;
316
- }
317
- span.run42 {
318
- background-color: rgb(178, 255, 188);
319
- display: block;
320
- }
321
- span.run43 {
322
- background-color: rgb(178, 255, 186);
323
- display: block;
324
- }
325
- span.run44 {
326
- background-color: rgb(178, 255, 183);
327
- display: block;
328
- }
329
- span.run45 {
330
- background-color: rgb(178, 255, 179);
331
- display: block;
332
- }
333
- span.run46 {
334
- background-color: rgb(179, 255, 178);
335
- display: block;
336
- }
337
- span.run47 {
338
- background-color: rgb(182, 255, 178);
339
- display: block;
340
- }
341
- span.run48 {
342
- background-color: rgb(184, 255, 178);
343
- display: block;
344
- }
345
- span.run49 {
346
- background-color: rgb(187, 255, 178);
347
- display: block;
348
- }
349
- span.run50 {
350
- background-color: rgb(191, 255, 178);
351
- display: block;
352
- }
353
- span.run51 {
354
- background-color: rgb(193, 255, 178);
355
- display: block;
356
- }
357
- span.run52 {
358
- background-color: rgb(196, 255, 178);
359
- display: block;
360
- }
361
- span.run53 {
362
- background-color: rgb(198, 255, 178);
363
- display: block;
364
- }
365
- span.run54 {
366
- background-color: rgb(201, 255, 178);
367
- display: block;
368
- }
369
- span.run55 {
370
- background-color: rgb(205, 255, 178);
371
- display: block;
372
- }
373
- span.run56 {
374
- background-color: rgb(207, 255, 178);
375
- display: block;
376
- }
377
- span.run57 {
378
- background-color: rgb(210, 255, 178);
379
- display: block;
380
- }
381
- span.run58 {
382
- background-color: rgb(212, 255, 178);
383
- display: block;
384
- }
385
- span.run59 {
386
- background-color: rgb(215, 255, 178);
387
- display: block;
388
- }
389
- span.run60 {
390
- background-color: rgb(219, 255, 178);
391
- display: block;
392
- }
393
- span.run61 {
394
- background-color: rgb(221, 255, 178);
395
- display: block;
396
- }
397
- span.run62 {
398
- background-color: rgb(224, 255, 178);
399
- display: block;
400
- }
401
- span.run63 {
402
- background-color: rgb(226, 255, 178);
403
- display: block;
404
- }
405
- span.run64 {
406
- background-color: rgb(229, 255, 178);
407
- display: block;
408
- }
409
- span.run65 {
410
- background-color: rgb(233, 255, 178);
411
- display: block;
412
- }
413
- span.run66 {
414
- background-color: rgb(235, 255, 178);
415
- display: block;
416
- }
417
- span.run67 {
418
- background-color: rgb(238, 255, 178);
419
- display: block;
420
- }
421
- span.run68 {
422
- background-color: rgb(240, 255, 178);
423
- display: block;
424
- }
425
- span.run69 {
426
- background-color: rgb(243, 255, 178);
427
- display: block;
428
- }
429
- span.run70 {
430
- background-color: rgb(247, 255, 178);
431
- display: block;
432
- }
433
- span.run71 {
434
- background-color: rgb(249, 255, 178);
435
- display: block;
436
- }
437
- span.run72 {
438
- background-color: rgb(252, 255, 178);
439
- display: block;
440
- }
441
- span.run73 {
442
- background-color: rgb(255, 255, 178);
443
- display: block;
444
- }
445
- span.run74 {
446
- background-color: rgb(255, 252, 178);
447
- display: block;
448
- }
449
- span.run75 {
450
- background-color: rgb(255, 248, 178);
451
- display: block;
452
- }
453
- span.run76 {
454
- background-color: rgb(255, 246, 178);
455
- display: block;
456
- }
457
- span.run77 {
458
- background-color: rgb(255, 243, 178);
459
- display: block;
460
- }
461
- span.run78 {
462
- background-color: rgb(255, 240, 178);
463
- display: block;
464
- }
465
- span.run79 {
466
- background-color: rgb(255, 238, 178);
467
- display: block;
468
- }
469
- span.run80 {
470
- background-color: rgb(255, 234, 178);
471
- display: block;
472
- }
473
- span.run81 {
474
- background-color: rgb(255, 232, 178);
475
- display: block;
476
- }
477
- span.run82 {
478
- background-color: rgb(255, 229, 178);
479
- display: block;
480
- }
481
- span.run83 {
482
- background-color: rgb(255, 226, 178);
483
- display: block;
484
- }
485
- span.run84 {
486
- background-color: rgb(255, 224, 178);
487
- display: block;
488
- }
489
- span.run85 {
490
- background-color: rgb(255, 220, 178);
491
- display: block;
492
- }
493
- span.run86 {
494
- background-color: rgb(255, 218, 178);
495
- display: block;
496
- }
497
- span.run87 {
498
- background-color: rgb(255, 215, 178);
499
- display: block;
500
- }
501
- span.run88 {
502
- background-color: rgb(255, 212, 178);
503
- display: block;
504
- }
505
- span.run89 {
506
- background-color: rgb(255, 210, 178);
507
- display: block;
508
- }
509
- span.run90 {
510
- background-color: rgb(255, 206, 178);
511
- display: block;
512
- }
513
- span.run91 {
514
- background-color: rgb(255, 204, 178);
515
- display: block;
516
- }
517
- span.run92 {
518
- background-color: rgb(255, 201, 178);
519
- display: block;
520
- }
521
- span.run93 {
522
- background-color: rgb(255, 198, 178);
523
- display: block;
524
- }
525
- span.run94 {
526
- background-color: rgb(255, 196, 178);
527
- display: block;
528
- }
529
- span.run95 {
530
- background-color: rgb(255, 192, 178);
531
- display: block;
532
- }
533
- span.run96 {
534
- background-color: rgb(255, 189, 178);
535
- display: block;
536
- }
537
- span.run97 {
538
- background-color: rgb(255, 187, 178);
539
- display: block;
540
- }
541
- span.run98 {
542
- background-color: rgb(255, 184, 178);
543
- display: block;
544
- }
545
- span.run99 {
546
- background-color: rgb(255, 182, 178);
547
- display: block;
548
- }
549
- span.run100 {
550
- background-color: rgb(255, 178, 178);
551
- display: block;
552
- }
553
- </style>
554
- </head>
555
- <body><h3>C0 code coverage information</h3>
556
- <p>Generated on Sat May 24 15:19:18 +0900 2008 with <a href='http://eigenclass.org/hiki/rcov'>rcov 0.8.1.2</a>
557
- </p>
558
- <hr/>
559
- <pre><span class='marked0'>Code reported as executed by Ruby looks like this...
560
- </span><span class='marked1'>and this: this line is also marked as covered.
561
- </span><span class='inferred0'>Lines considered as run by rcov, but not reported by Ruby, look like this,
562
- </span><span class='inferred1'>and this: these lines were inferred by rcov (using simple heuristics).
563
- </span><span class='uncovered0'>Finally, here&apos;s a line marked as not executed.
564
- </span></pre>
565
- <table class='report'><thead><tr><td class='heading'>Name</td>
566
- <td class='heading'>Total lines</td>
567
- <td class='heading'>Lines of code</td>
568
- <td class='heading'>Total coverage</td>
569
- <td class='heading'>Code coverage</td>
570
- </tr>
571
- </thead>
572
- <tbody><tr class='light'><td><a href='-System-Library-Frameworks-Ruby_framework-Versions-1_8-usr-lib-ruby-1_8-forwardable_rb.html'>/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/forwardable.rb</a>
573
- </td>
574
- <td class='lines_total'><tt>218</tt>
575
- </td>
576
- <td class='lines_code'><tt>50</tt>
577
- </td>
578
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>82.6%</tt>
579
- &nbsp;</td>
580
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='83'/>
581
- <td class='uncovered' width='17'/>
582
- </tr>
583
- </table>
584
- </td>
585
- </tr>
586
- </table>
587
- </td>
588
- <td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_code'>32.0%</tt>
589
- &nbsp;</td>
590
- <td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='32'/>
591
- <td class='uncovered' width='68'/>
592
- </tr>
593
- </table>
594
- </td>
595
- </tr>
596
- </table>
597
- </td>
598
- </tr>
599
- </tbody>
600
- </table>
601
- <pre><span class="inferred0"><a name="line1"></a> 1 # = forwardable - Support for the Delegation Pattern
602
- </span><span class="inferred1"><a name="line2"></a> 2 #
603
- </span><span class="inferred0"><a name="line3"></a> 3 # $Release Version: 1.1$
604
- </span><span class="inferred1"><a name="line4"></a> 4 # $Revision: 11708 $
605
- </span><span class="inferred0"><a name="line5"></a> 5 # $Date: 2007-02-13 08:01:19 +0900 (Tue, 13 Feb 2007) $
606
- </span><span class="inferred1"><a name="line6"></a> 6 # by Keiju ISHITSUKA(keiju@ishitsuka.com)
607
- </span><span class="inferred0"><a name="line7"></a> 7 #
608
- </span><span class="inferred1"><a name="line8"></a> 8 # Documentation by James Edward Gray II and Gavin Sinclair
609
- </span><span class="inferred0"><a name="line9"></a> 9 #
610
- </span><span class="inferred1"><a name="line10"></a> 10 # == Introduction
611
- </span><span class="inferred0"><a name="line11"></a> 11 #
612
- </span><span class="inferred1"><a name="line12"></a> 12 # This library allows you delegate method calls to an object, on a method by
613
- </span><span class="inferred0"><a name="line13"></a> 13 # method basis. You can use Forwardable to setup this delegation at the class
614
- </span><span class="inferred1"><a name="line14"></a> 14 # level, or SingleForwardable to handle it at the object level.
615
- </span><span class="inferred0"><a name="line15"></a> 15 #
616
- </span><span class="inferred1"><a name="line16"></a> 16 # == Notes
617
- </span><span class="inferred0"><a name="line17"></a> 17 #
618
- </span><span class="inferred1"><a name="line18"></a> 18 # Be advised, RDoc will not detect delegated methods.
619
- </span><span class="inferred0"><a name="line19"></a> 19 #
620
- </span><span class="inferred1"><a name="line20"></a> 20 # &lt;b&gt;forwardable.rb provides single-method delegation via the
621
- </span><span class="inferred0"><a name="line21"></a> 21 # def_delegator() and def_delegators() methods. For full-class
622
- </span><span class="inferred1"><a name="line22"></a> 22 # delegation via DelegateClass(), see delegate.rb.&lt;/b&gt;
623
- </span><span class="inferred0"><a name="line23"></a> 23 #
624
- </span><span class="inferred1"><a name="line24"></a> 24 # == Examples
625
- </span><span class="inferred0"><a name="line25"></a> 25 #
626
- </span><span class="inferred1"><a name="line26"></a> 26 # === Forwardable
627
- </span><span class="inferred0"><a name="line27"></a> 27 #
628
- </span><span class="inferred1"><a name="line28"></a> 28 # Forwardable makes building a new class based on existing work, with a proper
629
- </span><span class="inferred0"><a name="line29"></a> 29 # interface, almost trivial. We want to rely on what has come before obviously,
630
- </span><span class="inferred1"><a name="line30"></a> 30 # but with delegation we can take just the methods we need and even rename them
631
- </span><span class="inferred0"><a name="line31"></a> 31 # as appropriate. In many cases this is preferable to inheritance, which gives
632
- </span><span class="inferred1"><a name="line32"></a> 32 # us the entire old interface, even if much of it isn't needed.
633
- </span><span class="inferred0"><a name="line33"></a> 33 #
634
- </span><span class="inferred1"><a name="line34"></a> 34 # class Queue
635
- </span><span class="inferred0"><a name="line35"></a> 35 # extend Forwardable
636
- </span><span class="inferred1"><a name="line36"></a> 36 #
637
- </span><span class="inferred0"><a name="line37"></a> 37 # def initialize
638
- </span><span class="inferred1"><a name="line38"></a> 38 # @q = [ ] # prepare delegate object
639
- </span><span class="inferred0"><a name="line39"></a> 39 # end
640
- </span><span class="inferred1"><a name="line40"></a> 40 #
641
- </span><span class="inferred0"><a name="line41"></a> 41 # # setup prefered interface, enq() and deq()...
642
- </span><span class="inferred1"><a name="line42"></a> 42 # def_delegator :@q, :push, :enq
643
- </span><span class="inferred0"><a name="line43"></a> 43 # def_delegator :@q, :shift, :deq
644
- </span><span class="inferred1"><a name="line44"></a> 44 #
645
- </span><span class="inferred0"><a name="line45"></a> 45 # # support some general Array methods that fit Queues well
646
- </span><span class="inferred1"><a name="line46"></a> 46 # def_delegators :@q, :clear, :first, :push, :shift, :size
647
- </span><span class="inferred0"><a name="line47"></a> 47 # end
648
- </span><span class="inferred1"><a name="line48"></a> 48 #
649
- </span><span class="inferred0"><a name="line49"></a> 49 # q = Queue.new
650
- </span><span class="inferred1"><a name="line50"></a> 50 # q.enq 1, 2, 3, 4, 5
651
- </span><span class="inferred0"><a name="line51"></a> 51 # q.push 6
652
- </span><span class="inferred1"><a name="line52"></a> 52 #
653
- </span><span class="inferred0"><a name="line53"></a> 53 # q.shift # =&gt; 1
654
- </span><span class="inferred1"><a name="line54"></a> 54 # while q.size &gt; 0
655
- </span><span class="inferred0"><a name="line55"></a> 55 # puts q.deq
656
- </span><span class="inferred1"><a name="line56"></a> 56 # end
657
- </span><span class="inferred0"><a name="line57"></a> 57 #
658
- </span><span class="inferred1"><a name="line58"></a> 58 # q.enq &quot;Ruby&quot;, &quot;Perl&quot;, &quot;Python&quot;
659
- </span><span class="inferred0"><a name="line59"></a> 59 # puts q.first
660
- </span><span class="inferred1"><a name="line60"></a> 60 # q.clear
661
- </span><span class="inferred0"><a name="line61"></a> 61 # puts q.first
662
- </span><span class="inferred1"><a name="line62"></a> 62 #
663
- </span><span class="inferred0"><a name="line63"></a> 63 # &lt;i&gt;Prints:&lt;/i&gt;
664
- </span><span class="inferred1"><a name="line64"></a> 64 #
665
- </span><span class="inferred0"><a name="line65"></a> 65 # 2
666
- </span><span class="inferred1"><a name="line66"></a> 66 # 3
667
- </span><span class="inferred0"><a name="line67"></a> 67 # 4
668
- </span><span class="inferred1"><a name="line68"></a> 68 # 5
669
- </span><span class="inferred0"><a name="line69"></a> 69 # 6
670
- </span><span class="inferred1"><a name="line70"></a> 70 # Ruby
671
- </span><span class="inferred0"><a name="line71"></a> 71 # nil
672
- </span><span class="inferred1"><a name="line72"></a> 72 #
673
- </span><span class="inferred0"><a name="line73"></a> 73 # === SingleForwardable
674
- </span><span class="inferred1"><a name="line74"></a> 74 #
675
- </span><span class="inferred0"><a name="line75"></a> 75 # printer = String.new
676
- </span><span class="inferred1"><a name="line76"></a> 76 # printer.extend SingleForwardable # prepare object for delegation
677
- </span><span class="inferred0"><a name="line77"></a> 77 # printer.def_delegator &quot;STDOUT&quot;, &quot;puts&quot; # add delegation for STDOUT.puts()
678
- </span><span class="inferred1"><a name="line78"></a> 78 # printer.puts &quot;Howdy!&quot;
679
- </span><span class="inferred0"><a name="line79"></a> 79 #
680
- </span><span class="inferred1"><a name="line80"></a> 80 # &lt;i&gt;Prints:&lt;/i&gt;
681
- </span><span class="inferred0"><a name="line81"></a> 81 #
682
- </span><span class="inferred1"><a name="line82"></a> 82 # Howdy!
683
- </span><span class="inferred0"><a name="line83"></a> 83
684
- </span><span class="inferred1"><a name="line84"></a> 84 #
685
- </span><span class="inferred0"><a name="line85"></a> 85 # The Forwardable module provides delegation of specified
686
- </span><span class="inferred1"><a name="line86"></a> 86 # methods to a designated object, using the methods #def_delegator
687
- </span><span class="inferred0"><a name="line87"></a> 87 # and #def_delegators.
688
- </span><span class="inferred1"><a name="line88"></a> 88 #
689
- </span><span class="inferred0"><a name="line89"></a> 89 # For example, say you have a class RecordCollection which
690
- </span><span class="inferred1"><a name="line90"></a> 90 # contains an array &lt;tt&gt;@records&lt;/tt&gt;. You could provide the lookup method
691
- </span><span class="inferred0"><a name="line91"></a> 91 # #record_number(), which simply calls #[] on the &lt;tt&gt;@records&lt;/tt&gt;
692
- </span><span class="inferred1"><a name="line92"></a> 92 # array, like this:
693
- </span><span class="inferred0"><a name="line93"></a> 93 #
694
- </span><span class="inferred1"><a name="line94"></a> 94 # class RecordCollection
695
- </span><span class="inferred0"><a name="line95"></a> 95 # extend Forwardable
696
- </span><span class="inferred1"><a name="line96"></a> 96 # def_delegator :@records, :[], :record_number
697
- </span><span class="inferred0"><a name="line97"></a> 97 # end
698
- </span><span class="inferred1"><a name="line98"></a> 98 #
699
- </span><span class="inferred0"><a name="line99"></a> 99 # Further, if you wish to provide the methods #size, #&lt;&lt;, and #map,
700
- </span><span class="inferred1"><a name="line100"></a>100 # all of which delegate to @records, this is how you can do it:
701
- </span><span class="inferred0"><a name="line101"></a>101 #
702
- </span><span class="inferred1"><a name="line102"></a>102 # class RecordCollection
703
- </span><span class="inferred0"><a name="line103"></a>103 # # extend Forwardable, but we did that above
704
- </span><span class="inferred1"><a name="line104"></a>104 # def_delegators :@records, :size, :&lt;&lt;, :map
705
- </span><span class="inferred0"><a name="line105"></a>105 # end
706
- </span><span class="inferred1"><a name="line106"></a>106 #
707
- </span><span class="inferred0"><a name="line107"></a>107 # Also see the example at forwardable.rb.
708
- </span><span class="inferred1"><a name="line108"></a>108 #
709
- </span><span class="marked0"><a name="line109"></a>109 module Forwardable
710
- </span><span class="inferred1"><a name="line110"></a>110
711
- </span><span class="marked0"><a name="line111"></a>111 @debug = nil
712
- </span><span class="marked1"><a name="line112"></a>112 class&lt;&lt;self
713
- </span><span class="inferred0"><a name="line113"></a>113 # force Forwardable to show up in stack backtraces of delegated methods
714
- </span><span class="marked1"><a name="line114"></a>114 attr_accessor :debug
715
- </span><span class="inferred0"><a name="line115"></a>115 end
716
- </span><span class="inferred1"><a name="line116"></a>116
717
- </span><span class="inferred0"><a name="line117"></a>117 #
718
- </span><span class="inferred1"><a name="line118"></a>118 # Shortcut for defining multiple delegator methods, but with no
719
- </span><span class="inferred0"><a name="line119"></a>119 # provision for using a different name. The following two code
720
- </span><span class="inferred1"><a name="line120"></a>120 # samples have the same effect:
721
- </span><span class="inferred0"><a name="line121"></a>121 #
722
- </span><span class="inferred1"><a name="line122"></a>122 # def_delegators :@records, :size, :&lt;&lt;, :map
723
- </span><span class="inferred0"><a name="line123"></a>123 #
724
- </span><span class="inferred1"><a name="line124"></a>124 # def_delegator :@records, :size
725
- </span><span class="inferred0"><a name="line125"></a>125 # def_delegator :@records, :&lt;&lt;
726
- </span><span class="inferred1"><a name="line126"></a>126 # def_delegator :@records, :map
727
- </span><span class="inferred0"><a name="line127"></a>127 #
728
- </span><span class="inferred1"><a name="line128"></a>128 # See the examples at Forwardable and forwardable.rb.
729
- </span><span class="inferred0"><a name="line129"></a>129 #
730
- </span><span class="marked1"><a name="line130"></a>130 def def_instance_delegators(accessor, *methods)
731
- </span><span class="uncovered0"><a name="line131"></a>131 for method in methods
732
- </span><span class="uncovered1"><a name="line132"></a>132 def_instance_delegator(accessor, method)
733
- </span><span class="uncovered0"><a name="line133"></a>133 end
734
- </span><span class="uncovered1"><a name="line134"></a>134 end
735
- </span><span class="inferred0"><a name="line135"></a>135
736
- </span><span class="inferred1"><a name="line136"></a>136 #
737
- </span><span class="inferred0"><a name="line137"></a>137 # Defines a method _method_ which delegates to _obj_ (i.e. it calls
738
- </span><span class="inferred1"><a name="line138"></a>138 # the method of the same name in _obj_). If _new_name_ is
739
- </span><span class="inferred0"><a name="line139"></a>139 # provided, it is used as the name for the delegate method.
740
- </span><span class="inferred1"><a name="line140"></a>140 #
741
- </span><span class="inferred0"><a name="line141"></a>141 # See the examples at Forwardable and forwardable.rb.
742
- </span><span class="inferred1"><a name="line142"></a>142 #
743
- </span><span class="marked0"><a name="line143"></a>143 def def_instance_delegator(accessor, method, ali = method)
744
- </span><span class="uncovered1"><a name="line144"></a>144 accessor = accessor.id2name if accessor.kind_of?(Integer)
745
- </span><span class="uncovered0"><a name="line145"></a>145 method = method.id2name if method.kind_of?(Integer)
746
- </span><span class="uncovered1"><a name="line146"></a>146 ali = ali.id2name if ali.kind_of?(Integer)
747
- </span><span class="uncovered0"><a name="line147"></a>147
748
- </span><span class="uncovered1"><a name="line148"></a>148 module_eval(&lt;&lt;-EOS, &quot;(__FORWARDABLE__)&quot;, 1)
749
- </span><span class="uncovered0"><a name="line149"></a>149 def #{ali}(*args, &amp;block)
750
- </span><span class="uncovered1"><a name="line150"></a>150 begin
751
- </span><span class="uncovered0"><a name="line151"></a>151 #{accessor}.__send__(:#{method}, *args, &amp;block)
752
- </span><span class="uncovered1"><a name="line152"></a>152 rescue Exception
753
- </span><span class="uncovered0"><a name="line153"></a>153 $@.delete_if{|s| /^\\(__FORWARDABLE__\\):/ =~ s} unless Forwardable::debug
754
- </span><span class="uncovered1"><a name="line154"></a>154 Kernel::raise
755
- </span><span class="uncovered0"><a name="line155"></a>155 end
756
- </span><span class="uncovered1"><a name="line156"></a>156 end
757
- </span><span class="uncovered0"><a name="line157"></a>157 EOS
758
- </span><span class="uncovered1"><a name="line158"></a>158 end
759
- </span><span class="inferred0"><a name="line159"></a>159
760
- </span><span class="marked1"><a name="line160"></a>160 alias def_delegators def_instance_delegators
761
- </span><span class="marked0"><a name="line161"></a>161 alias def_delegator def_instance_delegator
762
- </span><span class="inferred1"><a name="line162"></a>162 end
763
- </span><span class="inferred0"><a name="line163"></a>163
764
- </span><span class="inferred1"><a name="line164"></a>164 #
765
- </span><span class="inferred0"><a name="line165"></a>165 # The SingleForwardable module provides delegation of specified
766
- </span><span class="inferred1"><a name="line166"></a>166 # methods to a designated object, using the methods #def_delegator
767
- </span><span class="inferred0"><a name="line167"></a>167 # and #def_delegators. This module is similar to Forwardable, but it works on
768
- </span><span class="inferred1"><a name="line168"></a>168 # objects themselves, instead of their defining classes.
769
- </span><span class="inferred0"><a name="line169"></a>169 #
770
- </span><span class="inferred1"><a name="line170"></a>170 # Also see the example at forwardable.rb.
771
- </span><span class="inferred0"><a name="line171"></a>171 #
772
- </span><span class="marked1"><a name="line172"></a>172 module SingleForwardable
773
- </span><span class="inferred0"><a name="line173"></a>173 #
774
- </span><span class="inferred1"><a name="line174"></a>174 # Shortcut for defining multiple delegator methods, but with no
775
- </span><span class="inferred0"><a name="line175"></a>175 # provision for using a different name. The following two code
776
- </span><span class="inferred1"><a name="line176"></a>176 # samples have the same effect:
777
- </span><span class="inferred0"><a name="line177"></a>177 #
778
- </span><span class="inferred1"><a name="line178"></a>178 # single_forwardable.def_delegators :@records, :size, :&lt;&lt;, :map
779
- </span><span class="inferred0"><a name="line179"></a>179 #
780
- </span><span class="inferred1"><a name="line180"></a>180 # single_forwardable.def_delegator :@records, :size
781
- </span><span class="inferred0"><a name="line181"></a>181 # single_forwardable.def_delegator :@records, :&lt;&lt;
782
- </span><span class="inferred1"><a name="line182"></a>182 # single_forwardable.def_delegator :@records, :map
783
- </span><span class="inferred0"><a name="line183"></a>183 #
784
- </span><span class="inferred1"><a name="line184"></a>184 # See the example at forwardable.rb.
785
- </span><span class="inferred0"><a name="line185"></a>185 #
786
- </span><span class="marked1"><a name="line186"></a>186 def def_singleton_delegators(accessor, *methods)
787
- </span><span class="uncovered0"><a name="line187"></a>187 for method in methods
788
- </span><span class="uncovered1"><a name="line188"></a>188 def_singleton_delegator(accessor, method)
789
- </span><span class="uncovered0"><a name="line189"></a>189 end
790
- </span><span class="uncovered1"><a name="line190"></a>190 end
791
- </span><span class="inferred0"><a name="line191"></a>191
792
- </span><span class="inferred1"><a name="line192"></a>192 #
793
- </span><span class="inferred0"><a name="line193"></a>193 # Defines a method _method_ which delegates to _obj_ (i.e. it calls
794
- </span><span class="inferred1"><a name="line194"></a>194 # the method of the same name in _obj_). If _new_name_ is
795
- </span><span class="inferred0"><a name="line195"></a>195 # provided, it is used as the name for the delegate method.
796
- </span><span class="inferred1"><a name="line196"></a>196 #
797
- </span><span class="inferred0"><a name="line197"></a>197 # See the example at forwardable.rb.
798
- </span><span class="inferred1"><a name="line198"></a>198 #
799
- </span><span class="marked0"><a name="line199"></a>199 def def_singleton_delegator(accessor, method, ali = method)
800
- </span><span class="uncovered1"><a name="line200"></a>200 accessor = accessor.id2name if accessor.kind_of?(Integer)
801
- </span><span class="uncovered0"><a name="line201"></a>201 method = method.id2name if method.kind_of?(Integer)
802
- </span><span class="uncovered1"><a name="line202"></a>202 ali = ali.id2name if ali.kind_of?(Integer)
803
- </span><span class="uncovered0"><a name="line203"></a>203
804
- </span><span class="uncovered1"><a name="line204"></a>204 instance_eval(&lt;&lt;-EOS, &quot;(__FORWARDABLE__)&quot;, 1)
805
- </span><span class="uncovered0"><a name="line205"></a>205 def #{ali}(*args, &amp;block)
806
- </span><span class="uncovered1"><a name="line206"></a>206 begin
807
- </span><span class="uncovered0"><a name="line207"></a>207 #{accessor}.__send__(:#{method}, *args,&amp;block)
808
- </span><span class="uncovered1"><a name="line208"></a>208 rescue Exception
809
- </span><span class="uncovered0"><a name="line209"></a>209 $@.delete_if{|s| /^\\(__FORWARDABLE__\\):/ =~ s} unless Forwardable::debug
810
- </span><span class="uncovered1"><a name="line210"></a>210 Kernel::raise
811
- </span><span class="uncovered0"><a name="line211"></a>211 end
812
- </span><span class="uncovered1"><a name="line212"></a>212 end
813
- </span><span class="uncovered0"><a name="line213"></a>213 EOS
814
- </span><span class="uncovered1"><a name="line214"></a>214 end
815
- </span><span class="inferred0"><a name="line215"></a>215
816
- </span><span class="marked1"><a name="line216"></a>216 alias def_delegators def_singleton_delegators
817
- </span><span class="marked0"><a name="line217"></a>217 alias def_delegator def_singleton_delegator
818
- </span><span class="inferred1"><a name="line218"></a>218 end
819
- </span></pre><hr/>
820
- <p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a>
821
- version 0.8.1.2.</p>
822
- <p><a href='http://validator.w3.org/check/referer'><img src='http://www.w3.org/Icons/valid-xhtml10' height='31' alt='Valid XHTML 1.0!' width='88'/>
823
- </a>
824
- <a href='http://jigsaw.w3.org/css-validator/check/referer'><img src='http://jigsaw.w3.org/css-validator/images/vcss' alt='Valid CSS!' style='border:0;width:88px;height:31px'/>
825
- </a>
826
- </p>
827
- </body>
828
- </html>