rack-auth-ip 0.0.4 → 0.0.5
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.
- data/.gitignore +17 -0
- data/Gemfile +5 -0
- data/LICENSE +22 -0
- data/README.md +44 -0
- data/Rakefile +2 -57
- data/lib/rack-auth-ip.rb +3 -0
- data/lib/rack-auth-ip/version.rb +7 -0
- data/lib/rack/auth/ip.rb +1 -1
- data/rack-auth-ip.gemspec +17 -0
- data/spec/spec_helper.rb +1 -1
- metadata +41 -83
- data/README +0 -37
- data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs-block_rb.html +0 -661
- data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs-callbacks_rb.html +0 -932
- data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs-change_rb.html +0 -779
- data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs-hunk_rb.html +0 -867
- data/doc/output/coverage/-Library-Ruby-Gems-gems-diff-lcs-1_1_2-lib-diff-lcs_rb.html +0 -1715
- data/doc/output/coverage/-Library-Ruby-Gems-gems-ipaddr_list-0_0_2-lib-ipaddr_list_rb.html +0 -794
- data/doc/output/coverage/-Library-Ruby-Gems-gems-rcov-0_8_1_2_0-lib-rcov_rb.html +0 -1598
- data/doc/output/coverage/index.html +0 -414
- data/doc/output/coverage/lib-rack-auth-ip_rb.html +0 -667
@@ -1,794 +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>/Library/Ruby/Gems/gems/ipaddr_list-0.0.2/lib/ipaddr_list.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 Sep 13 07:41:02 +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'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='-Library-Ruby-Gems-gems-ipaddr_list-0_0_2-lib-ipaddr_list_rb.html'>/Library/Ruby/Gems/gems/ipaddr_list-0.0.2/lib/ipaddr_list.rb</a>
|
573
|
-
</td>
|
574
|
-
<td class='lines_total'><tt>184</tt>
|
575
|
-
</td>
|
576
|
-
<td class='lines_code'><tt>138</tt>
|
577
|
-
</td>
|
578
|
-
<td><table cellspacing='0' cellpadding='0' align='right'><tr><td><tt class='coverage_total'>64.1%</tt>
|
579
|
-
</td>
|
580
|
-
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='64'/>
|
581
|
-
<td class='uncovered' width='36'/>
|
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'>52.9%</tt>
|
589
|
-
</td>
|
590
|
-
<td><table cellspacing='0' class='percent_graph' cellpadding='0' width='100'><tr><td class='covered' width='53'/>
|
591
|
-
<td class='uncovered' width='47'/>
|
592
|
-
</tr>
|
593
|
-
</table>
|
594
|
-
</td>
|
595
|
-
</tr>
|
596
|
-
</table>
|
597
|
-
</td>
|
598
|
-
</tr>
|
599
|
-
</tbody>
|
600
|
-
</table>
|
601
|
-
<pre><span class="inferred1"><a name="line1"></a> 1
|
602
|
-
</span><span class="marked0"><a name="line2"></a> 2 require 'ipaddr'
|
603
|
-
</span><span class="inferred1"><a name="line3"></a> 3
|
604
|
-
</span><span class="inferred0"><a name="line4"></a> 4 # taking method from 1.9.0 for comparing IPAddr instance.
|
605
|
-
</span><span class="marked1"><a name="line5"></a> 5 if RUBY_VERSION < '1.9.0'
|
606
|
-
</span><span class="marked0"><a name="line6"></a> 6 class IPAddr
|
607
|
-
</span><span class="inferred1"><a name="line7"></a> 7 # This code come from Ruby 1.9
|
608
|
-
</span><span class="inferred0"><a name="line8"></a> 8 # Compares the ipaddr with another.
|
609
|
-
</span><span class="marked1"><a name="line9"></a> 9 def <=>(other)
|
610
|
-
</span><span class="marked0"><a name="line10"></a> 10 other = coerce_other(other)
|
611
|
-
</span><span class="inferred1"><a name="line11"></a> 11
|
612
|
-
</span><span class="marked0"><a name="line12"></a> 12 return nil if other.family != @family
|
613
|
-
</span><span class="inferred1"><a name="line13"></a> 13
|
614
|
-
</span><span class="marked0"><a name="line14"></a> 14 return @addr <=> other.to_i
|
615
|
-
</span><span class="inferred1"><a name="line15"></a> 15 end
|
616
|
-
</span><span class="marked0"><a name="line16"></a> 16 include Comparable
|
617
|
-
</span><span class="inferred1"><a name="line17"></a> 17
|
618
|
-
</span><span class="marked0"><a name="line18"></a> 18 private
|
619
|
-
</span><span class="inferred1"><a name="line19"></a> 19
|
620
|
-
</span><span class="marked0"><a name="line20"></a> 20 def coerce_other(other)
|
621
|
-
</span><span class="marked1"><a name="line21"></a> 21 case other
|
622
|
-
</span><span class="marked0"><a name="line22"></a> 22 when IPAddr
|
623
|
-
</span><span class="marked1"><a name="line23"></a> 23 other
|
624
|
-
</span><span class="uncovered0"><a name="line24"></a> 24 when String
|
625
|
-
</span><span class="uncovered1"><a name="line25"></a> 25 self.class.new(other)
|
626
|
-
</span><span class="uncovered0"><a name="line26"></a> 26 else
|
627
|
-
</span><span class="uncovered1"><a name="line27"></a> 27 self.class.new(other, @family)
|
628
|
-
</span><span class="uncovered0"><a name="line28"></a> 28 end
|
629
|
-
</span><span class="marked1"><a name="line29"></a> 29 end
|
630
|
-
</span><span class="inferred0"><a name="line30"></a> 30 end
|
631
|
-
</span><span class="inferred1"><a name="line31"></a> 31 end
|
632
|
-
</span><span class="inferred0"><a name="line32"></a> 32
|
633
|
-
</span><span class="inferred1"><a name="line33"></a> 33 #
|
634
|
-
</span><span class="inferred0"><a name="line34"></a> 34 # SYNOPSIS
|
635
|
-
</span><span class="inferred1"><a name="line35"></a> 35 #
|
636
|
-
</span><span class="inferred0"><a name="line36"></a> 36 # require 'ipaddr_list'
|
637
|
-
</span><span class="inferred1"><a name="line37"></a> 37 # list = IPAddrList.new(['192.168.2.3/24', '192.168.0.100/24'], :BinarySearch)
|
638
|
-
</span><span class="inferred0"><a name="line38"></a> 38 # list.add('192.168.1.100/24')
|
639
|
-
</span><span class="inferred1"><a name="line39"></a> 39 # list.include?('192.168.0.30') #=> true
|
640
|
-
</span><span class="inferred0"><a name="line40"></a> 40 #
|
641
|
-
</span><span class="inferred1"><a name="line41"></a> 41 #
|
642
|
-
</span><span class="marked0"><a name="line42"></a> 42 class IPAddrList
|
643
|
-
</span><span class="marked1"><a name="line43"></a> 43 module Algorithm
|
644
|
-
</span><span class="inferred0"><a name="line44"></a> 44 # base interface for algorithm module. algorithm module should include this.
|
645
|
-
</span><span class="marked1"><a name="line45"></a> 45 module Lint
|
646
|
-
</span><span class="inferred0"><a name="line46"></a> 46 # called automatically from IPAddrList#initialize.
|
647
|
-
</span><span class="inferred1"><a name="line47"></a> 47 # you should implement how save ip address list.
|
648
|
-
</span><span class="marked0"><a name="line48"></a> 48 def after_init ip_list=[]
|
649
|
-
</span><span class="uncovered1"><a name="line49"></a> 49 raise NotImprementedError
|
650
|
-
</span><span class="uncovered0"><a name="line50"></a> 50 end
|
651
|
-
</span><span class="inferred1"><a name="line51"></a> 51
|
652
|
-
</span><span class="inferred0"><a name="line52"></a> 52 # abstract method. your should implement adding iterating ip address list.
|
653
|
-
</span><span class="marked1"><a name="line53"></a> 53 def each &block
|
654
|
-
</span><span class="uncovered0"><a name="line54"></a> 54 raise NotImprementedError
|
655
|
-
</span><span class="uncovered1"><a name="line55"></a> 55 end
|
656
|
-
</span><span class="inferred0"><a name="line56"></a> 56
|
657
|
-
</span><span class="marked1"><a name="line57"></a> 57 include Enumerable
|
658
|
-
</span><span class="inferred0"><a name="line58"></a> 58
|
659
|
-
</span><span class="inferred1"><a name="line59"></a> 59 # abstract method. you should implement adding ip address to ip address list.
|
660
|
-
</span><span class="marked0"><a name="line60"></a> 60 def add ip
|
661
|
-
</span><span class="uncovered1"><a name="line61"></a> 61 raise NotImprementedError
|
662
|
-
</span><span class="uncovered0"><a name="line62"></a> 62 end
|
663
|
-
</span><span class="uncovered1"><a name="line63"></a> 63 end
|
664
|
-
</span><span class="inferred0"><a name="line64"></a> 64
|
665
|
-
</span><span class="inferred1"><a name="line65"></a> 65 # slow and simple. It's for just benchmarking script.
|
666
|
-
</span><span class="marked0"><a name="line66"></a> 66 module LinearSearch
|
667
|
-
</span><span class="marked1"><a name="line67"></a> 67 include Lint
|
668
|
-
</span><span class="inferred0"><a name="line68"></a> 68
|
669
|
-
</span><span class="marked1"><a name="line69"></a> 69 def after_init ip_list=[]
|
670
|
-
</span><span class="uncovered0"><a name="line70"></a> 70 @ip_list = ip_list.map {|item|
|
671
|
-
</span><span class="uncovered1"><a name="line71"></a> 71 if item.kind_of? IPAddr
|
672
|
-
</span><span class="uncovered0"><a name="line72"></a> 72 item
|
673
|
-
</span><span class="uncovered1"><a name="line73"></a> 73 else
|
674
|
-
</span><span class="uncovered0"><a name="line74"></a> 74 IPAddr.new(item.to_s)
|
675
|
-
</span><span class="uncovered1"><a name="line75"></a> 75 end
|
676
|
-
</span><span class="uncovered0"><a name="line76"></a> 76 }
|
677
|
-
</span><span class="uncovered1"><a name="line77"></a> 77 end
|
678
|
-
</span><span class="inferred0"><a name="line78"></a> 78
|
679
|
-
</span><span class="marked1"><a name="line79"></a> 79 def add ip
|
680
|
-
</span><span class="uncovered0"><a name="line80"></a> 80 unless ip.kind_of? IPAddr
|
681
|
-
</span><span class="uncovered1"><a name="line81"></a> 81 ip = IPAddr.new(ip.to_s)
|
682
|
-
</span><span class="uncovered0"><a name="line82"></a> 82 end
|
683
|
-
</span><span class="uncovered1"><a name="line83"></a> 83 @ip_list.push ip
|
684
|
-
</span><span class="uncovered0"><a name="line84"></a> 84 end
|
685
|
-
</span><span class="inferred1"><a name="line85"></a> 85
|
686
|
-
</span><span class="marked0"><a name="line86"></a> 86 $LinearCount = 0
|
687
|
-
</span><span class="marked1"><a name="line87"></a> 87 def each &block
|
688
|
-
</span><span class="uncovered0"><a name="line88"></a> 88 @ip_list.each(&block)
|
689
|
-
</span><span class="uncovered1"><a name="line89"></a> 89 end
|
690
|
-
</span><span class="inferred0"><a name="line90"></a> 90
|
691
|
-
</span><span class="marked1"><a name="line91"></a> 91 def include? ip
|
692
|
-
</span><span class="uncovered0"><a name="line92"></a> 92 if ip.kind_of? IPAddr
|
693
|
-
</span><span class="uncovered1"><a name="line93"></a> 93 ipaddr = ip
|
694
|
-
</span><span class="uncovered0"><a name="line94"></a> 94 else
|
695
|
-
</span><span class="uncovered1"><a name="line95"></a> 95 ipaddr = IPAddr.new(ip)
|
696
|
-
</span><span class="uncovered0"><a name="line96"></a> 96 end
|
697
|
-
</span><span class="uncovered1"><a name="line97"></a> 97 @ip_list.any? {|item| item.include? ipaddr }
|
698
|
-
</span><span class="uncovered0"><a name="line98"></a> 98 end
|
699
|
-
</span><span class="uncovered1"><a name="line99"></a> 99 end
|
700
|
-
</span><span class="inferred0"><a name="line100"></a>100
|
701
|
-
</span><span class="inferred1"><a name="line101"></a>101 # searching ipaddress with binary search.
|
702
|
-
</span><span class="marked0"><a name="line102"></a>102 module BinarySearch
|
703
|
-
</span><span class="marked1"><a name="line103"></a>103 include Lint
|
704
|
-
</span><span class="inferred0"><a name="line104"></a>104
|
705
|
-
</span><span class="marked1"><a name="line105"></a>105 def after_init ip_list=[]
|
706
|
-
</span><span class="marked0"><a name="line106"></a>106 @ip_list = ip_list.map {|item|
|
707
|
-
</span><span class="marked1"><a name="line107"></a>107 if item.kind_of? IPAddr
|
708
|
-
</span><span class="uncovered0"><a name="line108"></a>108 item
|
709
|
-
</span><span class="inferred1"><a name="line109"></a>109 else
|
710
|
-
</span><span class="marked0"><a name="line110"></a>110 IPAddr.new(item.to_s)
|
711
|
-
</span><span class="inferred1"><a name="line111"></a>111 end
|
712
|
-
</span><span class="inferred0"><a name="line112"></a>112 }.sort
|
713
|
-
</span><span class="marked1"><a name="line113"></a>113 end
|
714
|
-
</span><span class="inferred0"><a name="line114"></a>114
|
715
|
-
</span><span class="marked1"><a name="line115"></a>115 def add ip
|
716
|
-
</span><span class="uncovered0"><a name="line116"></a>116 unless ip.kind_of? IPAddr
|
717
|
-
</span><span class="uncovered1"><a name="line117"></a>117 ip = IPAddr.new(ip.to_s)
|
718
|
-
</span><span class="uncovered0"><a name="line118"></a>118 end
|
719
|
-
</span><span class="uncovered1"><a name="line119"></a>119 @ip_list.push(ip)
|
720
|
-
</span><span class="uncovered0"><a name="line120"></a>120 @ip_list = @ip_list.sort
|
721
|
-
</span><span class="uncovered1"><a name="line121"></a>121 end
|
722
|
-
</span><span class="inferred0"><a name="line122"></a>122
|
723
|
-
</span><span class="marked1"><a name="line123"></a>123 def each &block
|
724
|
-
</span><span class="uncovered0"><a name="line124"></a>124 @ip_list.each(&block)
|
725
|
-
</span><span class="uncovered1"><a name="line125"></a>125 self
|
726
|
-
</span><span class="uncovered0"><a name="line126"></a>126 end
|
727
|
-
</span><span class="inferred1"><a name="line127"></a>127
|
728
|
-
</span><span class="marked0"><a name="line128"></a>128 def include? ip
|
729
|
-
</span><span class="marked1"><a name="line129"></a>129 binary_search ip do |ipaddr, range|
|
730
|
-
</span><span class="marked0"><a name="line130"></a>130 range.any? {|idx| @ip_list[idx].include? ipaddr }
|
731
|
-
</span><span class="inferred1"><a name="line131"></a>131 end
|
732
|
-
</span><span class="marked0"><a name="line132"></a>132 end
|
733
|
-
</span><span class="inferred1"><a name="line133"></a>133
|
734
|
-
</span><span class="inferred0"><a name="line134"></a>134 # binary search
|
735
|
-
</span><span class="inferred1"><a name="line135"></a>135 # SEE ALSO: http://dsas.blog.klab.org/archives/51293334.html
|
736
|
-
</span><span class="marked0"><a name="line136"></a>136 def binary_search ip, &block
|
737
|
-
</span><span class="marked1"><a name="line137"></a>137 ipaddr = nil
|
738
|
-
</span><span class="marked0"><a name="line138"></a>138 if ip.kind_of? IPAddr
|
739
|
-
</span><span class="marked1"><a name="line139"></a>139 ipaddr = ip
|
740
|
-
</span><span class="uncovered0"><a name="line140"></a>140 else
|
741
|
-
</span><span class="uncovered1"><a name="line141"></a>141 ipaddr = IPAddr.new(ip)
|
742
|
-
</span><span class="uncovered0"><a name="line142"></a>142 end
|
743
|
-
</span><span class="marked1"><a name="line143"></a>143 min_idx = 0
|
744
|
-
</span><span class="marked0"><a name="line144"></a>144 max_idx = @ip_list.size - 1
|
745
|
-
</span><span class="marked1"><a name="line145"></a>145 if @ip_list[max_idx] < ipaddr
|
746
|
-
</span><span class="marked0"><a name="line146"></a>146 min_idx = max_idx
|
747
|
-
</span><span class="marked1"><a name="line147"></a>147 elsif @ip_list[min_idx] > ipaddr
|
748
|
-
</span><span class="marked0"><a name="line148"></a>148 max_idx = min_idx
|
749
|
-
</span><span class="inferred1"><a name="line149"></a>149 else
|
750
|
-
</span><span class="marked0"><a name="line150"></a>150 span = max_idx - min_idx
|
751
|
-
</span><span class="marked1"><a name="line151"></a>151 while ( ( span ) > 7 ) do
|
752
|
-
</span><span class="uncovered0"><a name="line152"></a>152 middle_idx = span / 2 + min_idx
|
753
|
-
</span><span class="uncovered1"><a name="line153"></a>153 middle_ip = @ip_list[ middle_idx ]
|
754
|
-
</span><span class="uncovered0"><a name="line154"></a>154 if ipaddr >= middle_ip
|
755
|
-
</span><span class="uncovered1"><a name="line155"></a>155 min_idx = middle_idx
|
756
|
-
</span><span class="uncovered0"><a name="line156"></a>156 else
|
757
|
-
</span><span class="uncovered1"><a name="line157"></a>157 max_idx = middle_idx
|
758
|
-
</span><span class="uncovered0"><a name="line158"></a>158 end
|
759
|
-
</span><span class="uncovered1"><a name="line159"></a>159
|
760
|
-
</span><span class="uncovered0"><a name="line160"></a>160 span = max_idx - min_idx
|
761
|
-
</span><span class="uncovered1"><a name="line161"></a>161 end
|
762
|
-
</span><span class="uncovered0"><a name="line162"></a>162 end
|
763
|
-
</span><span class="inferred1"><a name="line163"></a>163
|
764
|
-
</span><span class="marked0"><a name="line164"></a>164 block.call(ipaddr, min_idx..max_idx)
|
765
|
-
</span><span class="inferred1"><a name="line165"></a>165 end
|
766
|
-
</span><span class="inferred0"><a name="line166"></a>166 end
|
767
|
-
</span><span class="inferred1"><a name="line167"></a>167 end
|
768
|
-
</span><span class="inferred0"><a name="line168"></a>168
|
769
|
-
</span><span class="marked1"><a name="line169"></a>169 def initialize ip_list, algorithm=IPAddrList::Algorithm::BinarySearch
|
770
|
-
</span><span class="marked0"><a name="line170"></a>170 unless algorithm.kind_of? Module
|
771
|
-
</span><span class="uncovered1"><a name="line171"></a>171 algorithm = IPAddrList::Algorithm.const_get(algorithm.to_s)
|
772
|
-
</span><span class="uncovered0"><a name="line172"></a>172 end
|
773
|
-
</span><span class="marked1"><a name="line173"></a>173 self.extend(algorithm)
|
774
|
-
</span><span class="marked0"><a name="line174"></a>174 @algorithm = algorithm
|
775
|
-
</span><span class="marked1"><a name="line175"></a>175 after_init ip_list
|
776
|
-
</span><span class="inferred0"><a name="line176"></a>176 end
|
777
|
-
</span><span class="inferred1"><a name="line177"></a>177 end
|
778
|
-
</span><span class="inferred0"><a name="line178"></a>178
|
779
|
-
</span><span class="marked1"><a name="line179"></a>179 if $0 == __FILE__
|
780
|
-
</span><span class="uncovered0"><a name="line180"></a>180 ip_list = IPAddrList.new(['192.168.2.3/24', '192.168.0.100/24'], :BinarySearch)
|
781
|
-
</span><span class="uncovered1"><a name="line181"></a>181 ip_list.add('192.168.1.10/24')
|
782
|
-
</span><span class="uncovered0"><a name="line182"></a>182 p ip_list.include?('192.168.1.1')
|
783
|
-
</span><span class="uncovered1"><a name="line183"></a>183 p ip_list.include?('192.168.0.100')
|
784
|
-
</span><span class="uncovered0"><a name="line184"></a>184 end
|
785
|
-
</span></pre><hr/>
|
786
|
-
<p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a>
|
787
|
-
version 0.8.1.2.</p>
|
788
|
-
<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'/>
|
789
|
-
</a>
|
790
|
-
<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'/>
|
791
|
-
</a>
|
792
|
-
</p>
|
793
|
-
</body>
|
794
|
-
</html>
|