Cartesian 0.3.0 → 0.4.1
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/lib/cartesian.rb +23 -26
- data/lib/cartesian_iterator.rb +102 -69
- data/lib/recursive.rb +8 -0
- data/tests/coverage/-home-adriano-software-ruby-Cartesian-lib-cartesian_iterator_rb.html +308 -0
- data/tests/coverage/-home-adriano-software-ruby-Cartesian-lib-cartesian_rb.html +384 -0
- data/tests/coverage/-home-adriano-software-ruby-Cartesian-lib-extensions_rb.html +214 -0
- data/tests/coverage/-home-adriano-software-ruby-Cartesian-lib-grid_search_rb.html +242 -0
- data/tests/coverage/index.html +141 -0
- data/tests/tc_cartesian.rb +54 -26
- data/tests/tc_cartesian_iterator.rb +34 -0
- metadata +49 -34
@@ -0,0 +1,384 @@
|
|
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'>
|
3
|
+
<head>
|
4
|
+
<title>
|
5
|
+
/home/adriano/software/ruby/Cartesian/lib/cartesian.rb - C0 code coverage
|
6
|
+
information
|
7
|
+
</title>
|
8
|
+
<style type='text/css'>
|
9
|
+
body { background-color: rgb(240, 240, 245); }
|
10
|
+
</style>
|
11
|
+
<style type='text/css'>
|
12
|
+
span.cross-ref-title { font-size: 140%; } span.cross-ref a {
|
13
|
+
text-decoration: none; } span.cross-ref { background-color:#f3f7fa;
|
14
|
+
border: 1px dashed #333; margin: 1em; padding: 0.5em; overflow: hidden; }
|
15
|
+
a.crossref-toggle { text-decoration: none; } span.marked0 {
|
16
|
+
background-color: rgb(185, 210, 200); display: block; } span.marked1 {
|
17
|
+
background-color: rgb(190, 215, 205); display: block; } span.inferred0 {
|
18
|
+
background-color: rgb(175, 200, 200); display: block; } span.inferred1 {
|
19
|
+
background-color: rgb(180, 205, 205); display: block; } span.uncovered0 {
|
20
|
+
background-color: rgb(225, 110, 110); display: block; } span.uncovered1 {
|
21
|
+
background-color: rgb(235, 120, 120); display: block; } span.overview {
|
22
|
+
border-bottom: 8px solid black; } div.overview { border-bottom: 8px solid
|
23
|
+
black; } body { font-family: verdana, arial, helvetica; } div.footer {
|
24
|
+
font-size: 68%; margin-top: 1.5em; } h1, h2, h3, h4, h5, h6 {
|
25
|
+
margin-bottom: 0.5em; } h5 { margin-top: 0.5em; } .hidden { display: none;
|
26
|
+
} div.separator { height: 10px; } /* Commented out for better readability,
|
27
|
+
esp. on IE */ /* table tr td, table tr th { font-size: 68%; } td.value
|
28
|
+
table tr td { font-size: 11px; } */ table.percent_graph { height: 12px;
|
29
|
+
border: #808080 1px solid; empty-cells: show; } table.percent_graph
|
30
|
+
td.covered { height: 10px; background: #00f000; } table.percent_graph
|
31
|
+
td.uncovered { height: 10px; background: #e00000; } table.percent_graph
|
32
|
+
td.NA { height: 10px; background: #eaeaea; } table.report {
|
33
|
+
border-collapse: collapse; width: 100%; } table.report td.heading {
|
34
|
+
background: #dcecff; border: #d0d0d0 1px solid; font-weight: bold;
|
35
|
+
text-align: center; } table.report td.heading:hover { background: #c0ffc0;
|
36
|
+
} table.report td.text { border: #d0d0d0 1px solid; } table.report
|
37
|
+
td.value, table.report td.lines_total, table.report td.lines_code {
|
38
|
+
text-align: right; border: #d0d0d0 1px solid; } table.report tr.light {
|
39
|
+
background-color: rgb(240, 240, 245); } table.report tr.dark {
|
40
|
+
background-color: rgb(230, 230, 235); }
|
41
|
+
</style>
|
42
|
+
<script type='text/javascript'>
|
43
|
+
// <![CDATA[ function toggleCode( id ) { if ( document.getElementById )
|
44
|
+
elem = document.getElementById( id ); else if ( document.all ) elem =
|
45
|
+
eval( "document.all." + id ); else return false; elemStyle = elem.style;
|
46
|
+
if ( elemStyle.display != "block" ) { elemStyle.display = "block" } else {
|
47
|
+
elemStyle.display = "none" } return true; } // Make cross-references
|
48
|
+
hidden by default document.writeln( "<style
|
49
|
+
type=\"text/css\">span.cross-ref { display: none }</style>" ) // ]]>
|
50
|
+
</script>
|
51
|
+
<style type='text/css'>
|
52
|
+
span.run0 { background-color: rgb(178, 204, 255); display: block; }
|
53
|
+
span.run1 { background-color: rgb(178, 206, 255); display: block; }
|
54
|
+
span.run2 { background-color: rgb(178, 209, 255); display: block; }
|
55
|
+
span.run3 { background-color: rgb(178, 211, 255); display: block; }
|
56
|
+
span.run4 { background-color: rgb(178, 214, 255); display: block; }
|
57
|
+
span.run5 { background-color: rgb(178, 218, 255); display: block; }
|
58
|
+
span.run6 { background-color: rgb(178, 220, 255); display: block; }
|
59
|
+
span.run7 { background-color: rgb(178, 223, 255); display: block; }
|
60
|
+
span.run8 { background-color: rgb(178, 225, 255); display: block; }
|
61
|
+
span.run9 { background-color: rgb(178, 228, 255); display: block; }
|
62
|
+
span.run10 { background-color: rgb(178, 232, 255); display: block; }
|
63
|
+
span.run11 { background-color: rgb(178, 234, 255); display: block; }
|
64
|
+
span.run12 { background-color: rgb(178, 237, 255); display: block; }
|
65
|
+
span.run13 { background-color: rgb(178, 239, 255); display: block; }
|
66
|
+
span.run14 { background-color: rgb(178, 242, 255); display: block; }
|
67
|
+
span.run15 { background-color: rgb(178, 246, 255); display: block; }
|
68
|
+
span.run16 { background-color: rgb(178, 248, 255); display: block; }
|
69
|
+
span.run17 { background-color: rgb(178, 251, 255); display: block; }
|
70
|
+
span.run18 { background-color: rgb(178, 253, 255); display: block; }
|
71
|
+
span.run19 { background-color: rgb(178, 255, 253); display: block; }
|
72
|
+
span.run20 { background-color: rgb(178, 255, 249); display: block; }
|
73
|
+
span.run21 { background-color: rgb(178, 255, 247); display: block; }
|
74
|
+
span.run22 { background-color: rgb(178, 255, 244); display: block; }
|
75
|
+
span.run23 { background-color: rgb(178, 255, 242); display: block; }
|
76
|
+
span.run24 { background-color: rgb(178, 255, 239); display: block; }
|
77
|
+
span.run25 { background-color: rgb(178, 255, 235); display: block; }
|
78
|
+
span.run26 { background-color: rgb(178, 255, 233); display: block; }
|
79
|
+
span.run27 { background-color: rgb(178, 255, 230); display: block; }
|
80
|
+
span.run28 { background-color: rgb(178, 255, 228); display: block; }
|
81
|
+
span.run29 { background-color: rgb(178, 255, 225); display: block; }
|
82
|
+
span.run30 { background-color: rgb(178, 255, 221); display: block; }
|
83
|
+
span.run31 { background-color: rgb(178, 255, 219); display: block; }
|
84
|
+
span.run32 { background-color: rgb(178, 255, 216); display: block; }
|
85
|
+
span.run33 { background-color: rgb(178, 255, 214); display: block; }
|
86
|
+
span.run34 { background-color: rgb(178, 255, 211); display: block; }
|
87
|
+
span.run35 { background-color: rgb(178, 255, 207); display: block; }
|
88
|
+
span.run36 { background-color: rgb(178, 255, 205); display: block; }
|
89
|
+
span.run37 { background-color: rgb(178, 255, 202); display: block; }
|
90
|
+
span.run38 { background-color: rgb(178, 255, 200); display: block; }
|
91
|
+
span.run39 { background-color: rgb(178, 255, 197); display: block; }
|
92
|
+
span.run40 { background-color: rgb(178, 255, 193); display: block; }
|
93
|
+
span.run41 { background-color: rgb(178, 255, 191); display: block; }
|
94
|
+
span.run42 { background-color: rgb(178, 255, 188); display: block; }
|
95
|
+
span.run43 { background-color: rgb(178, 255, 186); display: block; }
|
96
|
+
span.run44 { background-color: rgb(178, 255, 183); display: block; }
|
97
|
+
span.run45 { background-color: rgb(178, 255, 179); display: block; }
|
98
|
+
span.run46 { background-color: rgb(179, 255, 178); display: block; }
|
99
|
+
span.run47 { background-color: rgb(182, 255, 178); display: block; }
|
100
|
+
span.run48 { background-color: rgb(184, 255, 178); display: block; }
|
101
|
+
span.run49 { background-color: rgb(187, 255, 178); display: block; }
|
102
|
+
span.run50 { background-color: rgb(191, 255, 178); display: block; }
|
103
|
+
span.run51 { background-color: rgb(193, 255, 178); display: block; }
|
104
|
+
span.run52 { background-color: rgb(196, 255, 178); display: block; }
|
105
|
+
span.run53 { background-color: rgb(198, 255, 178); display: block; }
|
106
|
+
span.run54 { background-color: rgb(201, 255, 178); display: block; }
|
107
|
+
span.run55 { background-color: rgb(205, 255, 178); display: block; }
|
108
|
+
span.run56 { background-color: rgb(207, 255, 178); display: block; }
|
109
|
+
span.run57 { background-color: rgb(210, 255, 178); display: block; }
|
110
|
+
span.run58 { background-color: rgb(212, 255, 178); display: block; }
|
111
|
+
span.run59 { background-color: rgb(215, 255, 178); display: block; }
|
112
|
+
span.run60 { background-color: rgb(219, 255, 178); display: block; }
|
113
|
+
span.run61 { background-color: rgb(221, 255, 178); display: block; }
|
114
|
+
span.run62 { background-color: rgb(224, 255, 178); display: block; }
|
115
|
+
span.run63 { background-color: rgb(226, 255, 178); display: block; }
|
116
|
+
span.run64 { background-color: rgb(229, 255, 178); display: block; }
|
117
|
+
span.run65 { background-color: rgb(233, 255, 178); display: block; }
|
118
|
+
span.run66 { background-color: rgb(235, 255, 178); display: block; }
|
119
|
+
span.run67 { background-color: rgb(238, 255, 178); display: block; }
|
120
|
+
span.run68 { background-color: rgb(240, 255, 178); display: block; }
|
121
|
+
span.run69 { background-color: rgb(243, 255, 178); display: block; }
|
122
|
+
span.run70 { background-color: rgb(247, 255, 178); display: block; }
|
123
|
+
span.run71 { background-color: rgb(249, 255, 178); display: block; }
|
124
|
+
span.run72 { background-color: rgb(252, 255, 178); display: block; }
|
125
|
+
span.run73 { background-color: rgb(255, 255, 178); display: block; }
|
126
|
+
span.run74 { background-color: rgb(255, 252, 178); display: block; }
|
127
|
+
span.run75 { background-color: rgb(255, 248, 178); display: block; }
|
128
|
+
span.run76 { background-color: rgb(255, 246, 178); display: block; }
|
129
|
+
span.run77 { background-color: rgb(255, 243, 178); display: block; }
|
130
|
+
span.run78 { background-color: rgb(255, 240, 178); display: block; }
|
131
|
+
span.run79 { background-color: rgb(255, 238, 178); display: block; }
|
132
|
+
span.run80 { background-color: rgb(255, 234, 178); display: block; }
|
133
|
+
span.run81 { background-color: rgb(255, 232, 178); display: block; }
|
134
|
+
span.run82 { background-color: rgb(255, 229, 178); display: block; }
|
135
|
+
span.run83 { background-color: rgb(255, 226, 178); display: block; }
|
136
|
+
span.run84 { background-color: rgb(255, 224, 178); display: block; }
|
137
|
+
span.run85 { background-color: rgb(255, 220, 178); display: block; }
|
138
|
+
span.run86 { background-color: rgb(255, 218, 178); display: block; }
|
139
|
+
span.run87 { background-color: rgb(255, 215, 178); display: block; }
|
140
|
+
span.run88 { background-color: rgb(255, 212, 178); display: block; }
|
141
|
+
span.run89 { background-color: rgb(255, 210, 178); display: block; }
|
142
|
+
span.run90 { background-color: rgb(255, 206, 178); display: block; }
|
143
|
+
span.run91 { background-color: rgb(255, 204, 178); display: block; }
|
144
|
+
span.run92 { background-color: rgb(255, 201, 178); display: block; }
|
145
|
+
span.run93 { background-color: rgb(255, 198, 178); display: block; }
|
146
|
+
span.run94 { background-color: rgb(255, 196, 178); display: block; }
|
147
|
+
span.run95 { background-color: rgb(255, 192, 178); display: block; }
|
148
|
+
span.run96 { background-color: rgb(255, 189, 178); display: block; }
|
149
|
+
span.run97 { background-color: rgb(255, 187, 178); display: block; }
|
150
|
+
span.run98 { background-color: rgb(255, 184, 178); display: block; }
|
151
|
+
span.run99 { background-color: rgb(255, 182, 178); display: block; }
|
152
|
+
span.run100 { background-color: rgb(255, 178, 178); display: block; }
|
153
|
+
</style>
|
154
|
+
</head>
|
155
|
+
<body>
|
156
|
+
<h3>
|
157
|
+
C0 code coverage information
|
158
|
+
</h3>
|
159
|
+
<p>
|
160
|
+
Generated on Tue Nov 04 04:48:28 -0200 2008 with
|
161
|
+
<a href='http://eigenclass.org/hiki/rcov'>
|
162
|
+
rcov 0.8.1.2
|
163
|
+
</a>
|
164
|
+
</p>
|
165
|
+
<hr />
|
166
|
+
<pre><span class='marked0'>Code reported as executed by Ruby looks like
|
167
|
+
this... </span><span class='marked1'>and this: this line is also marked as
|
168
|
+
covered. </span><span class='inferred0'>Lines considered as run by rcov, but
|
169
|
+
not reported by Ruby, look like this, </span><span class='inferred1'>and
|
170
|
+
this: these lines were inferred by rcov (using simple heuristics).
|
171
|
+
</span><span class='uncovered0'>Finally, here's a line marked as not
|
172
|
+
executed. </span></pre>
|
173
|
+
<table class='report'> <thead> <tr> <td class='heading'> Name </td> <td
|
174
|
+
class='heading'> Total lines </td> <td class='heading'> Lines of code </td>
|
175
|
+
<td class='heading'> Total coverage </td> <td class='heading'> Code coverage
|
176
|
+
</td> </tr> </thead> <tbody> <tr class='light'> <td> <a
|
177
|
+
href='-home-adriano-software-ruby-Cartesian-lib-cartesian_rb.html'>
|
178
|
+
/home/adriano/software/ruby/Cartesian/lib/cartesian.rb </a> </td> <td
|
179
|
+
class='lines_total'> <tt> 161 </tt> </td> <td class='lines_code'> <tt> 52
|
180
|
+
</tt> </td> <td> <table cellspacing='0' align='right' cellpadding='0'> <tr>
|
181
|
+
<td> <tt class='coverage_total'> 100.0% </tt> </td> <td> <table
|
182
|
+
class='percent_graph' cellspacing='0' width='100' cellpadding='0'> <tr> <td
|
183
|
+
class='covered' width='100' /> <td class='uncovered' width='0' /> </tr>
|
184
|
+
</table> </td> </tr> </table> </td> <td> <table cellspacing='0'
|
185
|
+
align='right' cellpadding='0'> <tr> <td> <tt class='coverage_code'> 100.0%
|
186
|
+
</tt> </td> <td> <table class='percent_graph' cellspacing='0'
|
187
|
+
width='100' cellpadding='0'> <tr> <td class='covered' width='100' /> <td
|
188
|
+
class='uncovered' width='0' /> </tr> </table> </td> </tr> </table> </td>
|
189
|
+
</tr> </tbody> </table><pre><span class="inferred1"><a name="line1"></a> 1 #
|
190
|
+
</span><span class="inferred0"><a name="line2"></a> 2 # The CartesianProduct
|
191
|
+
module provide methods for the calculation </span><span class="inferred1"><a
|
192
|
+
name="line3"></a> 3 # of the cartesian producted between two enumberable
|
193
|
+
objects. </span><span class="inferred0"><a name="line4"></a> 4 #
|
194
|
+
</span><span class="inferred1"><a name="line5"></a> 5 # It can also be
|
195
|
+
easily mixed in into any enumberable class, </span><span
|
196
|
+
class="inferred0"><a name="line6"></a> 6 # i.e. any class with Enumerable
|
197
|
+
module mixed in. </span><span class="inferred1"><a name="line7"></a> 7 #
|
198
|
+
Notice that the names of the methods for mixin are different. </span><span
|
199
|
+
class="inferred0"><a name="line8"></a> 8 # </span><span class="inferred1"><a
|
200
|
+
name="line9"></a> 9 # Module: </span><span class="inferred0"><a
|
201
|
+
name="line10"></a> 10 # Cartesian::product(foo, bar) </span><span
|
202
|
+
class="inferred1"><a name="line11"></a> 11 # </span><span
|
203
|
+
class="inferred0"><a name="line12"></a> 12 # Mixin: </span><span
|
204
|
+
class="inferred1"><a name="line13"></a> 13 # foo.cartesian( bar )
|
205
|
+
</span><span class="inferred0"><a name="line14"></a> 14 # </span><span
|
206
|
+
class="inferred1"><a name="line15"></a> 15 # The module is automatically
|
207
|
+
mixed in Array class. </span><span class="inferred0"><a name="line16"></a>
|
208
|
+
16 # </span><span class="inferred1"><a name="line17"></a> 17 # == Author
|
209
|
+
</span><span class="inferred0"><a name="line18"></a> 18 # Adriano MITRE
|
210
|
+
<adriano.mitre@gmail.com> </span><span class="inferred1"><a
|
211
|
+
name="line19"></a> 19 # </span><span class="inferred0"><a name="line20"></a>
|
212
|
+
20 # == Example </span><span class="inferred1"><a name="line21"></a> 21 #
|
213
|
+
</span><span class="inferred0"><a name="line22"></a> 22 # as module
|
214
|
+
</span><span class="inferred1"><a name="line23"></a> 23 # require
|
215
|
+
'cartesian' </span><span class="inferred0"><a name="line24"></a> 24 # foo =
|
216
|
+
[1, 2] </span><span class="inferred1"><a name="line25"></a> 25 # bar =
|
217
|
+
["a", "b"] </span><span class="inferred0"><a
|
218
|
+
name="line26"></a> 26 # Cartesian::product(foo, bar) #=> [[1,
|
219
|
+
"a"], [1, "b"], [2, "a"], [2, "b"]]
|
220
|
+
</span><span class="inferred1"><a name="line27"></a> 27 # as mixin
|
221
|
+
</span><span class="inferred0"><a name="line28"></a> 28 # require
|
222
|
+
'cartesian' </span><span class="inferred1"><a name="line29"></a> 29 # foo =
|
223
|
+
[1, 2] </span><span class="inferred0"><a name="line30"></a> 30 # bar =
|
224
|
+
["a", "b"] </span><span class="inferred1"><a
|
225
|
+
name="line31"></a> 31 # foo.cartesian(bar) #=> [[1, "a"], [1,
|
226
|
+
"b"], [2, "a"], [2, "b"]] </span><span
|
227
|
+
class="inferred0"><a name="line32"></a> 32 # </span><span
|
228
|
+
class="inferred1"><a name="line33"></a> 33 </span><span class="marked0"><a
|
229
|
+
name="line34"></a> 34 require 'cartesian_iterator' </span><span
|
230
|
+
class="inferred1"><a name="line35"></a> 35 </span><span class="marked0"><a
|
231
|
+
name="line36"></a> 36 module Cartesian </span><span class="inferred1"><a
|
232
|
+
name="line37"></a> 37 </span><span class="inferred0"><a name="line38"></a>
|
233
|
+
38 # Produces the cartesian product of self and other. </span><span
|
234
|
+
class="inferred1"><a name="line39"></a> 39 # The result is an array of pairs
|
235
|
+
(i.e. two-element arrays). </span><span class="inferred0"><a
|
236
|
+
name="line40"></a> 40 # </span><span class="inferred1"><a name="line41"></a>
|
237
|
+
41 # Cartesian::product( [1,2], %w(A B) ) #=> [[1, "A"], [1,
|
238
|
+
"B"], [2, "A"], [2, "B"]] </span><span
|
239
|
+
class="inferred0"><a name="line42"></a> 42 # </span><span
|
240
|
+
class="inferred1"><a name="line43"></a> 43 # or, if mixed in into Array,
|
241
|
+
</span><span class="inferred0"><a name="line44"></a> 44 # </span><span
|
242
|
+
class="inferred1"><a name="line45"></a> 45 # [1,2].cartesian %w(A B) #=>
|
243
|
+
[[1, "A"], [1, "B"], [2, "A"], [2,
|
244
|
+
"B"]] </span><span class="inferred0"><a name="line46"></a> 46 #
|
245
|
+
</span><span class="marked1"><a name="line47"></a> 47 def
|
246
|
+
Cartesian.product(first, second) </span><span class="marked0"><a
|
247
|
+
name="line48"></a> 48 first.x(second).to_a </span><span class="inferred1"><a
|
248
|
+
name="line49"></a> 49 end </span><span class="inferred0"><a
|
249
|
+
name="line50"></a> 50 </span><span class="inferred1"><a name="line51"></a>
|
250
|
+
51 # Behaves as product, except for the elements are joined. </span><span
|
251
|
+
class="inferred0"><a name="line52"></a> 52 # </span><span
|
252
|
+
class="inferred1"><a name="line53"></a> 53 # Cartesian::joined_cartesian(
|
253
|
+
[1,2], %w(A B) ) #=> ["1A", "1B", "2A",
|
254
|
+
"2B"] </span><span class="inferred0"><a name="line54"></a> 54 #
|
255
|
+
</span><span class="inferred1"><a name="line55"></a> 55 # or, if mixed in
|
256
|
+
into Array, </span><span class="inferred0"><a name="line56"></a> 56 #
|
257
|
+
</span><span class="inferred1"><a name="line57"></a> 57 #
|
258
|
+
[1,2].joined_cartesian %w(A B) #=> ["1A", "1B",
|
259
|
+
"2A", "2B"] </span><span class="inferred0"><a
|
260
|
+
name="line58"></a> 58 # </span><span class="marked1"><a name="line59"></a>
|
261
|
+
59 def Cartesian.joined_product(first, second) </span><span
|
262
|
+
class="marked0"><a name="line60"></a> 60 product(first, second).map {|pair|
|
263
|
+
pair.join } </span><span class="inferred1"><a name="line61"></a> 61 end
|
264
|
+
</span><span class="inferred0"><a name="line62"></a> 62 </span><span
|
265
|
+
class="inferred1"><a name="line63"></a> 63 # Cartesian.joined_product for
|
266
|
+
mixin. </span><span class="inferred0"><a name="line64"></a> 64 #
|
267
|
+
</span><span class="marked1"><a name="line65"></a> 65 def
|
268
|
+
joined_cartesian(other) </span><span class="marked0"><a name="line66"></a>
|
269
|
+
66 Cartesian.joined_product(self, other) </span><span class="inferred1"><a
|
270
|
+
name="line67"></a> 67 end </span><span class="inferred0"><a
|
271
|
+
name="line68"></a> 68 </span><span class="inferred1"><a name="line69"></a>
|
272
|
+
69 # Convenient way of iterating over the elements. </span><span
|
273
|
+
class="inferred0"><a name="line70"></a> 70 # Preferable when the cartesian
|
274
|
+
product array </span><span class="inferred1"><a name="line71"></a> 71 # is
|
275
|
+
not needed, for the consumption of memory </span><span class="inferred0"><a
|
276
|
+
name="line72"></a> 72 # is fixed and very small, in contrast with the
|
277
|
+
</span><span class="inferred1"><a name="line73"></a> 73 # exponential memory
|
278
|
+
requirements of the </span><span class="inferred0"><a name="line74"></a> 74
|
279
|
+
# conventional approach. </span><span class="inferred1"><a
|
280
|
+
name="line75"></a> 75 # </span><span class="inferred0"><a name="line76"></a>
|
281
|
+
76 # for row, col in (1..10).x(1..30) </span><span class="inferred1"><a
|
282
|
+
name="line77"></a> 77 # Matrix[row, col] = row**2 + col**3 </span><span
|
283
|
+
class="inferred0"><a name="line78"></a> 78 # end </span><span
|
284
|
+
class="inferred1"><a name="line79"></a> 79 # </span><span
|
285
|
+
class="inferred0"><a name="line80"></a> 80 # Of course, calls can be chained
|
286
|
+
as in </span><span class="inferred1"><a name="line81"></a> 81 # </span><span
|
287
|
+
class="inferred0"><a name="line82"></a> 82 # for x, y, z in
|
288
|
+
(1..10).x(1..10).x(1..10) </span><span class="inferred1"><a
|
289
|
+
name="line83"></a> 83 # # ... do something ... </span><span
|
290
|
+
class="inferred0"><a name="line84"></a> 84 # end </span><span
|
291
|
+
class="inferred1"><a name="line85"></a> 85 # </span><span
|
292
|
+
class="inferred0"><a name="line86"></a> 86 #-- </span><span
|
293
|
+
class="inferred1"><a name="line87"></a> 87 # for letter, number in %w{a b
|
294
|
+
c}.x(1..3) </span><span class="inferred0"><a name="line88"></a> 88 # ... do
|
295
|
+
something ... </span><span class="inferred1"><a name="line89"></a> 89 # end
|
296
|
+
</span><span class="inferred0"><a name="line90"></a> 90 #++ </span><span
|
297
|
+
class="inferred1"><a name="line91"></a> 91 # </span><span
|
298
|
+
class="inferred0"><a name="line92"></a> 92 # Beware that both +self+ and
|
299
|
+
+other+ must implement </span><span class="inferred1"><a name="line93"></a>
|
300
|
+
93 # +to_a+, i.e., be convertible to array. </span><span
|
301
|
+
class="inferred0"><a name="line94"></a> 94 # </span><span class="marked1"><a
|
302
|
+
name="line95"></a> 95 def x(other) </span><span class="marked0"><a
|
303
|
+
name="line96"></a> 96 case other </span><span class="marked1"><a
|
304
|
+
name="line97"></a> 97 when CartesianIterator </span><span
|
305
|
+
class="inferred0"><a name="line98"></a> 98 other.left_product(self)
|
306
|
+
</span><span class="inferred1"><a name="line99"></a> 99 else </span><span
|
307
|
+
class="marked0"><a name="line100"></a>100 CartesianIterator.new(self, other)
|
308
|
+
</span><span class="inferred1"><a name="line101"></a>101 end </span><span
|
309
|
+
class="inferred0"><a name="line102"></a>102 end </span><span
|
310
|
+
class="marked1"><a name="line103"></a>103 alias cartesian x </span><span
|
311
|
+
class="marked0"><a name="line104"></a>104 alias right_product x </span><span
|
312
|
+
class="inferred1"><a name="line105"></a>105 </span><span class="marked0"><a
|
313
|
+
name="line106"></a>106 def left_product(other) </span><span
|
314
|
+
class="marked1"><a name="line107"></a>107 case other </span><span
|
315
|
+
class="marked0"><a name="line108"></a>108 when CartesianIterator
|
316
|
+
</span><span class="inferred1"><a name="line109"></a>109
|
317
|
+
other.right_product(self) </span><span class="inferred0"><a
|
318
|
+
name="line110"></a>110 else </span><span class="marked1"><a
|
319
|
+
name="line111"></a>111 CartesianIterator.new(other, self) </span><span
|
320
|
+
class="inferred0"><a name="line112"></a>112 end </span><span
|
321
|
+
class="inferred1"><a name="line113"></a>113 end </span><span
|
322
|
+
class="inferred0"><a name="line114"></a>114 </span><span
|
323
|
+
class="inferred1"><a name="line115"></a>115 # Concise way of iterating
|
324
|
+
multi-dimensionally </span><span class="inferred0"><a name="line116"></a>116
|
325
|
+
# over the same array or range. </span><span class="inferred1"><a
|
326
|
+
name="line117"></a>117 # </span><span class="inferred0"><a
|
327
|
+
name="line118"></a>118 # For instance, </span><span class="inferred1"><a
|
328
|
+
name="line119"></a>119 # </span><span class="inferred0"><a
|
329
|
+
name="line120"></a>120 # for x,y,z in [0,1]**3 </span><span
|
330
|
+
class="inferred1"><a name="line121"></a>121 # puts [x, y, z].join(',')
|
331
|
+
</span><span class="inferred0"><a name="line122"></a>122 # end </span><span
|
332
|
+
class="inferred1"><a name="line123"></a>123 # </span><span
|
333
|
+
class="inferred0"><a name="line124"></a>124 # produces the following output
|
334
|
+
</span><span class="inferred1"><a name="line125"></a>125 # </span><span
|
335
|
+
class="inferred0"><a name="line126"></a>126 # 0,0,0 </span><span
|
336
|
+
class="inferred1"><a name="line127"></a>127 # 0,0,1 </span><span
|
337
|
+
class="inferred0"><a name="line128"></a>128 # 0,1,0 </span><span
|
338
|
+
class="inferred1"><a name="line129"></a>129 # 0,1,1 </span><span
|
339
|
+
class="inferred0"><a name="line130"></a>130 # 1,0,0 </span><span
|
340
|
+
class="inferred1"><a name="line131"></a>131 # 1,0,1 </span><span
|
341
|
+
class="inferred0"><a name="line132"></a>132 # 1,1,0 </span><span
|
342
|
+
class="inferred1"><a name="line133"></a>133 # 1,1,1 </span><span
|
343
|
+
class="inferred0"><a name="line134"></a>134 # </span><span
|
344
|
+
class="inferred1"><a name="line135"></a>135 # It also works with Range
|
345
|
+
objects. </span><span class="inferred0"><a name="line136"></a>136 #
|
346
|
+
</span><span class="marked1"><a name="line137"></a>137 def **(fixnum)
|
347
|
+
</span><span class="marked0"><a name="line138"></a>138 if fixnum < 0
|
348
|
+
</span><span class="marked1"><a name="line139"></a>139 raise ArgumentError,
|
349
|
+
"negative power" </span><span class="marked0"><a
|
350
|
+
name="line140"></a>140 elsif fixnum == 0 </span><span class="marked1"><a
|
351
|
+
name="line141"></a>141 return [] </span><span class="marked0"><a
|
352
|
+
name="line142"></a>142 elsif fixnum == 1 </span><span class="marked1"><a
|
353
|
+
name="line143"></a>143 return self </span><span class="inferred0"><a
|
354
|
+
name="line144"></a>144 else </span><span class="marked1"><a
|
355
|
+
name="line145"></a>145 iter = CartesianIterator.new(self, self) </span><span
|
356
|
+
class="marked0"><a name="line146"></a>146 (fixnum-2).times do </span><span
|
357
|
+
class="marked1"><a name="line147"></a>147 iter.product!(self) </span><span
|
358
|
+
class="inferred0"><a name="line148"></a>148 end </span><span
|
359
|
+
class="marked1"><a name="line149"></a>149 iter </span><span
|
360
|
+
class="inferred0"><a name="line150"></a>150 end </span><span
|
361
|
+
class="inferred1"><a name="line151"></a>151 end </span><span
|
362
|
+
class="marked0"><a name="line152"></a>152 alias :power! :** </span><span
|
363
|
+
class="inferred1"><a name="line153"></a>153 end </span><span
|
364
|
+
class="inferred0"><a name="line154"></a>154 </span><span class="marked1"><a
|
365
|
+
name="line155"></a>155 class Array </span><span class="marked0"><a
|
366
|
+
name="line156"></a>156 include Cartesian </span><span class="inferred1"><a
|
367
|
+
name="line157"></a>157 end </span><span class="inferred0"><a
|
368
|
+
name="line158"></a>158 </span><span class="marked1"><a
|
369
|
+
name="line159"></a>159 class Range </span><span class="marked0"><a
|
370
|
+
name="line160"></a>160 include Cartesian </span><span class="inferred1"><a
|
371
|
+
name="line161"></a>161 end </span></pre>
|
372
|
+
<hr />
|
373
|
+
<p> Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'> rcov
|
374
|
+
code coverage analysis tool for Ruby </a> version 0.8.1.2. </p>
|
375
|
+
<p>
|
376
|
+
<a href='http://validator.w3.org/check/referer'>
|
377
|
+
<img src='http://www.w3.org/Icons/valid-xhtml10' height='31' alt='Valid XHTML 1.0!' width='88' />
|
378
|
+
</a>
|
379
|
+
<a href='http://jigsaw.w3.org/css-validator/check/referer'>
|
380
|
+
<img src='http://jigsaw.w3.org/css-validator/images/vcss' alt='Valid CSS!' style='border:0;width:88px;height:31px' />
|
381
|
+
</a>
|
382
|
+
</p>
|
383
|
+
</body>
|
384
|
+
</html>
|
@@ -0,0 +1,214 @@
|
|
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'>
|
3
|
+
<head>
|
4
|
+
<title>
|
5
|
+
/home/adriano/software/ruby/Cartesian/lib/extensions.rb - C0 code coverage
|
6
|
+
information
|
7
|
+
</title>
|
8
|
+
<style type='text/css'>
|
9
|
+
body { background-color: rgb(240, 240, 245); }
|
10
|
+
</style>
|
11
|
+
<style type='text/css'>
|
12
|
+
span.cross-ref-title { font-size: 140%; } span.cross-ref a {
|
13
|
+
text-decoration: none; } span.cross-ref { background-color:#f3f7fa;
|
14
|
+
border: 1px dashed #333; margin: 1em; padding: 0.5em; overflow: hidden; }
|
15
|
+
a.crossref-toggle { text-decoration: none; } span.marked0 {
|
16
|
+
background-color: rgb(185, 210, 200); display: block; } span.marked1 {
|
17
|
+
background-color: rgb(190, 215, 205); display: block; } span.inferred0 {
|
18
|
+
background-color: rgb(175, 200, 200); display: block; } span.inferred1 {
|
19
|
+
background-color: rgb(180, 205, 205); display: block; } span.uncovered0 {
|
20
|
+
background-color: rgb(225, 110, 110); display: block; } span.uncovered1 {
|
21
|
+
background-color: rgb(235, 120, 120); display: block; } span.overview {
|
22
|
+
border-bottom: 8px solid black; } div.overview { border-bottom: 8px solid
|
23
|
+
black; } body { font-family: verdana, arial, helvetica; } div.footer {
|
24
|
+
font-size: 68%; margin-top: 1.5em; } h1, h2, h3, h4, h5, h6 {
|
25
|
+
margin-bottom: 0.5em; } h5 { margin-top: 0.5em; } .hidden { display: none;
|
26
|
+
} div.separator { height: 10px; } /* Commented out for better readability,
|
27
|
+
esp. on IE */ /* table tr td, table tr th { font-size: 68%; } td.value
|
28
|
+
table tr td { font-size: 11px; } */ table.percent_graph { height: 12px;
|
29
|
+
border: #808080 1px solid; empty-cells: show; } table.percent_graph
|
30
|
+
td.covered { height: 10px; background: #00f000; } table.percent_graph
|
31
|
+
td.uncovered { height: 10px; background: #e00000; } table.percent_graph
|
32
|
+
td.NA { height: 10px; background: #eaeaea; } table.report {
|
33
|
+
border-collapse: collapse; width: 100%; } table.report td.heading {
|
34
|
+
background: #dcecff; border: #d0d0d0 1px solid; font-weight: bold;
|
35
|
+
text-align: center; } table.report td.heading:hover { background: #c0ffc0;
|
36
|
+
} table.report td.text { border: #d0d0d0 1px solid; } table.report
|
37
|
+
td.value, table.report td.lines_total, table.report td.lines_code {
|
38
|
+
text-align: right; border: #d0d0d0 1px solid; } table.report tr.light {
|
39
|
+
background-color: rgb(240, 240, 245); } table.report tr.dark {
|
40
|
+
background-color: rgb(230, 230, 235); }
|
41
|
+
</style>
|
42
|
+
<script type='text/javascript'>
|
43
|
+
// <![CDATA[ function toggleCode( id ) { if ( document.getElementById )
|
44
|
+
elem = document.getElementById( id ); else if ( document.all ) elem =
|
45
|
+
eval( "document.all." + id ); else return false; elemStyle = elem.style;
|
46
|
+
if ( elemStyle.display != "block" ) { elemStyle.display = "block" } else {
|
47
|
+
elemStyle.display = "none" } return true; } // Make cross-references
|
48
|
+
hidden by default document.writeln( "<style
|
49
|
+
type=\"text/css\">span.cross-ref { display: none }</style>" ) // ]]>
|
50
|
+
</script>
|
51
|
+
<style type='text/css'>
|
52
|
+
span.run0 { background-color: rgb(178, 204, 255); display: block; }
|
53
|
+
span.run1 { background-color: rgb(178, 206, 255); display: block; }
|
54
|
+
span.run2 { background-color: rgb(178, 209, 255); display: block; }
|
55
|
+
span.run3 { background-color: rgb(178, 211, 255); display: block; }
|
56
|
+
span.run4 { background-color: rgb(178, 214, 255); display: block; }
|
57
|
+
span.run5 { background-color: rgb(178, 218, 255); display: block; }
|
58
|
+
span.run6 { background-color: rgb(178, 220, 255); display: block; }
|
59
|
+
span.run7 { background-color: rgb(178, 223, 255); display: block; }
|
60
|
+
span.run8 { background-color: rgb(178, 225, 255); display: block; }
|
61
|
+
span.run9 { background-color: rgb(178, 228, 255); display: block; }
|
62
|
+
span.run10 { background-color: rgb(178, 232, 255); display: block; }
|
63
|
+
span.run11 { background-color: rgb(178, 234, 255); display: block; }
|
64
|
+
span.run12 { background-color: rgb(178, 237, 255); display: block; }
|
65
|
+
span.run13 { background-color: rgb(178, 239, 255); display: block; }
|
66
|
+
span.run14 { background-color: rgb(178, 242, 255); display: block; }
|
67
|
+
span.run15 { background-color: rgb(178, 246, 255); display: block; }
|
68
|
+
span.run16 { background-color: rgb(178, 248, 255); display: block; }
|
69
|
+
span.run17 { background-color: rgb(178, 251, 255); display: block; }
|
70
|
+
span.run18 { background-color: rgb(178, 253, 255); display: block; }
|
71
|
+
span.run19 { background-color: rgb(178, 255, 253); display: block; }
|
72
|
+
span.run20 { background-color: rgb(178, 255, 249); display: block; }
|
73
|
+
span.run21 { background-color: rgb(178, 255, 247); display: block; }
|
74
|
+
span.run22 { background-color: rgb(178, 255, 244); display: block; }
|
75
|
+
span.run23 { background-color: rgb(178, 255, 242); display: block; }
|
76
|
+
span.run24 { background-color: rgb(178, 255, 239); display: block; }
|
77
|
+
span.run25 { background-color: rgb(178, 255, 235); display: block; }
|
78
|
+
span.run26 { background-color: rgb(178, 255, 233); display: block; }
|
79
|
+
span.run27 { background-color: rgb(178, 255, 230); display: block; }
|
80
|
+
span.run28 { background-color: rgb(178, 255, 228); display: block; }
|
81
|
+
span.run29 { background-color: rgb(178, 255, 225); display: block; }
|
82
|
+
span.run30 { background-color: rgb(178, 255, 221); display: block; }
|
83
|
+
span.run31 { background-color: rgb(178, 255, 219); display: block; }
|
84
|
+
span.run32 { background-color: rgb(178, 255, 216); display: block; }
|
85
|
+
span.run33 { background-color: rgb(178, 255, 214); display: block; }
|
86
|
+
span.run34 { background-color: rgb(178, 255, 211); display: block; }
|
87
|
+
span.run35 { background-color: rgb(178, 255, 207); display: block; }
|
88
|
+
span.run36 { background-color: rgb(178, 255, 205); display: block; }
|
89
|
+
span.run37 { background-color: rgb(178, 255, 202); display: block; }
|
90
|
+
span.run38 { background-color: rgb(178, 255, 200); display: block; }
|
91
|
+
span.run39 { background-color: rgb(178, 255, 197); display: block; }
|
92
|
+
span.run40 { background-color: rgb(178, 255, 193); display: block; }
|
93
|
+
span.run41 { background-color: rgb(178, 255, 191); display: block; }
|
94
|
+
span.run42 { background-color: rgb(178, 255, 188); display: block; }
|
95
|
+
span.run43 { background-color: rgb(178, 255, 186); display: block; }
|
96
|
+
span.run44 { background-color: rgb(178, 255, 183); display: block; }
|
97
|
+
span.run45 { background-color: rgb(178, 255, 179); display: block; }
|
98
|
+
span.run46 { background-color: rgb(179, 255, 178); display: block; }
|
99
|
+
span.run47 { background-color: rgb(182, 255, 178); display: block; }
|
100
|
+
span.run48 { background-color: rgb(184, 255, 178); display: block; }
|
101
|
+
span.run49 { background-color: rgb(187, 255, 178); display: block; }
|
102
|
+
span.run50 { background-color: rgb(191, 255, 178); display: block; }
|
103
|
+
span.run51 { background-color: rgb(193, 255, 178); display: block; }
|
104
|
+
span.run52 { background-color: rgb(196, 255, 178); display: block; }
|
105
|
+
span.run53 { background-color: rgb(198, 255, 178); display: block; }
|
106
|
+
span.run54 { background-color: rgb(201, 255, 178); display: block; }
|
107
|
+
span.run55 { background-color: rgb(205, 255, 178); display: block; }
|
108
|
+
span.run56 { background-color: rgb(207, 255, 178); display: block; }
|
109
|
+
span.run57 { background-color: rgb(210, 255, 178); display: block; }
|
110
|
+
span.run58 { background-color: rgb(212, 255, 178); display: block; }
|
111
|
+
span.run59 { background-color: rgb(215, 255, 178); display: block; }
|
112
|
+
span.run60 { background-color: rgb(219, 255, 178); display: block; }
|
113
|
+
span.run61 { background-color: rgb(221, 255, 178); display: block; }
|
114
|
+
span.run62 { background-color: rgb(224, 255, 178); display: block; }
|
115
|
+
span.run63 { background-color: rgb(226, 255, 178); display: block; }
|
116
|
+
span.run64 { background-color: rgb(229, 255, 178); display: block; }
|
117
|
+
span.run65 { background-color: rgb(233, 255, 178); display: block; }
|
118
|
+
span.run66 { background-color: rgb(235, 255, 178); display: block; }
|
119
|
+
span.run67 { background-color: rgb(238, 255, 178); display: block; }
|
120
|
+
span.run68 { background-color: rgb(240, 255, 178); display: block; }
|
121
|
+
span.run69 { background-color: rgb(243, 255, 178); display: block; }
|
122
|
+
span.run70 { background-color: rgb(247, 255, 178); display: block; }
|
123
|
+
span.run71 { background-color: rgb(249, 255, 178); display: block; }
|
124
|
+
span.run72 { background-color: rgb(252, 255, 178); display: block; }
|
125
|
+
span.run73 { background-color: rgb(255, 255, 178); display: block; }
|
126
|
+
span.run74 { background-color: rgb(255, 252, 178); display: block; }
|
127
|
+
span.run75 { background-color: rgb(255, 248, 178); display: block; }
|
128
|
+
span.run76 { background-color: rgb(255, 246, 178); display: block; }
|
129
|
+
span.run77 { background-color: rgb(255, 243, 178); display: block; }
|
130
|
+
span.run78 { background-color: rgb(255, 240, 178); display: block; }
|
131
|
+
span.run79 { background-color: rgb(255, 238, 178); display: block; }
|
132
|
+
span.run80 { background-color: rgb(255, 234, 178); display: block; }
|
133
|
+
span.run81 { background-color: rgb(255, 232, 178); display: block; }
|
134
|
+
span.run82 { background-color: rgb(255, 229, 178); display: block; }
|
135
|
+
span.run83 { background-color: rgb(255, 226, 178); display: block; }
|
136
|
+
span.run84 { background-color: rgb(255, 224, 178); display: block; }
|
137
|
+
span.run85 { background-color: rgb(255, 220, 178); display: block; }
|
138
|
+
span.run86 { background-color: rgb(255, 218, 178); display: block; }
|
139
|
+
span.run87 { background-color: rgb(255, 215, 178); display: block; }
|
140
|
+
span.run88 { background-color: rgb(255, 212, 178); display: block; }
|
141
|
+
span.run89 { background-color: rgb(255, 210, 178); display: block; }
|
142
|
+
span.run90 { background-color: rgb(255, 206, 178); display: block; }
|
143
|
+
span.run91 { background-color: rgb(255, 204, 178); display: block; }
|
144
|
+
span.run92 { background-color: rgb(255, 201, 178); display: block; }
|
145
|
+
span.run93 { background-color: rgb(255, 198, 178); display: block; }
|
146
|
+
span.run94 { background-color: rgb(255, 196, 178); display: block; }
|
147
|
+
span.run95 { background-color: rgb(255, 192, 178); display: block; }
|
148
|
+
span.run96 { background-color: rgb(255, 189, 178); display: block; }
|
149
|
+
span.run97 { background-color: rgb(255, 187, 178); display: block; }
|
150
|
+
span.run98 { background-color: rgb(255, 184, 178); display: block; }
|
151
|
+
span.run99 { background-color: rgb(255, 182, 178); display: block; }
|
152
|
+
span.run100 { background-color: rgb(255, 178, 178); display: block; }
|
153
|
+
</style>
|
154
|
+
</head>
|
155
|
+
<body>
|
156
|
+
<h3>
|
157
|
+
C0 code coverage information
|
158
|
+
</h3>
|
159
|
+
<p>
|
160
|
+
Generated on Tue Nov 04 04:48:28 -0200 2008 with
|
161
|
+
<a href='http://eigenclass.org/hiki/rcov'>
|
162
|
+
rcov 0.8.1.2
|
163
|
+
</a>
|
164
|
+
</p>
|
165
|
+
<hr />
|
166
|
+
<pre><span class='marked0'>Code reported as executed by Ruby looks like
|
167
|
+
this... </span><span class='marked1'>and this: this line is also marked as
|
168
|
+
covered. </span><span class='inferred0'>Lines considered as run by rcov, but
|
169
|
+
not reported by Ruby, look like this, </span><span class='inferred1'>and
|
170
|
+
this: these lines were inferred by rcov (using simple heuristics).
|
171
|
+
</span><span class='uncovered0'>Finally, here's a line marked as not
|
172
|
+
executed. </span></pre>
|
173
|
+
<table class='report'> <thead> <tr> <td class='heading'> Name </td> <td
|
174
|
+
class='heading'> Total lines </td> <td class='heading'> Lines of code </td>
|
175
|
+
<td class='heading'> Total coverage </td> <td class='heading'> Code coverage
|
176
|
+
</td> </tr> </thead> <tbody> <tr class='light'> <td> <a
|
177
|
+
href='-home-adriano-software-ruby-Cartesian-lib-extensions_rb.html'>
|
178
|
+
/home/adriano/software/ruby/Cartesian/lib/extensions.rb </a> </td> <td
|
179
|
+
class='lines_total'> <tt> 12 </tt> </td> <td class='lines_code'> <tt> 5
|
180
|
+
</tt> </td> <td> <table cellspacing='0' align='right' cellpadding='0'> <tr>
|
181
|
+
<td> <tt class='coverage_total'> 100.0% </tt> </td> <td> <table
|
182
|
+
class='percent_graph' cellspacing='0' width='100' cellpadding='0'> <tr> <td
|
183
|
+
class='covered' width='100' /> <td class='uncovered' width='0' /> </tr>
|
184
|
+
</table> </td> </tr> </table> </td> <td> <table cellspacing='0'
|
185
|
+
align='right' cellpadding='0'> <tr> <td> <tt class='coverage_code'> 100.0%
|
186
|
+
</tt> </td> <td> <table class='percent_graph' cellspacing='0'
|
187
|
+
width='100' cellpadding='0'> <tr> <td class='covered' width='100' /> <td
|
188
|
+
class='uncovered' width='0' /> </tr> </table> </td> </tr> </table> </td>
|
189
|
+
</tr> </tbody> </table><pre><span class="marked0"><a name="line1"></a> 1
|
190
|
+
class Object </span><span class="inferred1"><a name="line2"></a> 2
|
191
|
+
</span><span class="inferred0"><a name="line3"></a> 3 # Syntax sugar for
|
192
|
+
"is this object among this array?" </span><span
|
193
|
+
class="inferred1"><a name="line4"></a> 4 # </span><span class="inferred0"><a
|
194
|
+
name="line5"></a> 5 # 1.among? [1,2,3] #=> true </span><span
|
195
|
+
class="inferred1"><a name="line6"></a> 6 # 0.among? [4,5] #=> false
|
196
|
+
</span><span class="inferred0"><a name="line7"></a> 7 # </span><span
|
197
|
+
class="marked1"><a name="line8"></a> 8 def among?(ary) </span><span
|
198
|
+
class="marked0"><a name="line9"></a> 9 ary.include? self </span><span
|
199
|
+
class="inferred1"><a name="line10"></a>10 end </span><span
|
200
|
+
class="inferred0"><a name="line11"></a>11 </span><span class="inferred1"><a
|
201
|
+
name="line12"></a>12 end </span></pre>
|
202
|
+
<hr />
|
203
|
+
<p> Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'> rcov
|
204
|
+
code coverage analysis tool for Ruby </a> version 0.8.1.2. </p>
|
205
|
+
<p>
|
206
|
+
<a href='http://validator.w3.org/check/referer'>
|
207
|
+
<img src='http://www.w3.org/Icons/valid-xhtml10' height='31' alt='Valid XHTML 1.0!' width='88' />
|
208
|
+
</a>
|
209
|
+
<a href='http://jigsaw.w3.org/css-validator/check/referer'>
|
210
|
+
<img src='http://jigsaw.w3.org/css-validator/images/vcss' alt='Valid CSS!' style='border:0;width:88px;height:31px' />
|
211
|
+
</a>
|
212
|
+
</p>
|
213
|
+
</body>
|
214
|
+
</html>
|