mack-facets 0.6.0 → 0.6.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,188 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: Math</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">Math</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/extensions/math_rb.html">
59
+ lib/extensions/math.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ </table>
66
+ </div>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+
71
+
72
+
73
+ <div id="contextContent">
74
+
75
+
76
+
77
+ </div>
78
+
79
+ <div id="method-list">
80
+ <h3 class="section-bar">Methods</h3>
81
+
82
+ <div class="name-list">
83
+ <a href="#M000047">log2</a>&nbsp;&nbsp;
84
+ <a href="#M000049">max</a>&nbsp;&nbsp;
85
+ <a href="#M000048">min</a>&nbsp;&nbsp;
86
+ </div>
87
+ </div>
88
+
89
+ </div>
90
+
91
+
92
+ <!-- if includes -->
93
+
94
+ <div id="section">
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+ <!-- if method_list -->
104
+ <div id="methods">
105
+ <h3 class="section-bar">Public Class methods</h3>
106
+
107
+ <div id="method-M000047" class="method-detail">
108
+ <a name="M000047"></a>
109
+
110
+ <div class="method-heading">
111
+ <a href="#M000047" class="method-signature">
112
+ <span class="method-name">log2</span><span class="method-args">(x)</span>
113
+ </a>
114
+ </div>
115
+
116
+ <div class="method-description">
117
+ <p><a class="source-toggle" href="#"
118
+ onclick="toggleCode('M000047-source');return false;">[Source]</a></p>
119
+ <div class="method-source-code" id="M000047-source">
120
+ <pre>
121
+ <span class="ruby-comment cmt"># File lib/extensions/math.rb, line 3</span>
122
+ 3: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">log2</span>(<span class="ruby-identifier">x</span>)
123
+ 4: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">log</span>(<span class="ruby-identifier">x</span>)<span class="ruby-operator">/</span><span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">log</span>(<span class="ruby-value">2.0</span>)
124
+ 5: <span class="ruby-keyword kw">end</span>
125
+ </pre>
126
+ </div>
127
+ </div>
128
+ </div>
129
+
130
+ <div id="method-M000049" class="method-detail">
131
+ <a name="M000049"></a>
132
+
133
+ <div class="method-heading">
134
+ <a href="#M000049" class="method-signature">
135
+ <span class="method-name">max</span><span class="method-args">(a, b)</span>
136
+ </a>
137
+ </div>
138
+
139
+ <div class="method-description">
140
+ <p><a class="source-toggle" href="#"
141
+ onclick="toggleCode('M000049-source');return false;">[Source]</a></p>
142
+ <div class="method-source-code" id="M000049-source">
143
+ <pre>
144
+ <span class="ruby-comment cmt"># File lib/extensions/math.rb, line 11</span>
145
+ 11: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">max</span>(<span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span>)
146
+ 12: <span class="ruby-identifier">a</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">b</span> <span class="ruby-value">? </span><span class="ruby-identifier">a</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">b</span>
147
+ 13: <span class="ruby-keyword kw">end</span>
148
+ </pre>
149
+ </div>
150
+ </div>
151
+ </div>
152
+
153
+ <div id="method-M000048" class="method-detail">
154
+ <a name="M000048"></a>
155
+
156
+ <div class="method-heading">
157
+ <a href="#M000048" class="method-signature">
158
+ <span class="method-name">min</span><span class="method-args">(a, b)</span>
159
+ </a>
160
+ </div>
161
+
162
+ <div class="method-description">
163
+ <p><a class="source-toggle" href="#"
164
+ onclick="toggleCode('M000048-source');return false;">[Source]</a></p>
165
+ <div class="method-source-code" id="M000048-source">
166
+ <pre>
167
+ <span class="ruby-comment cmt"># File lib/extensions/math.rb, line 7</span>
168
+ 7: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">min</span>(<span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span>)
169
+ 8: <span class="ruby-identifier">a</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">b</span> <span class="ruby-value">? </span><span class="ruby-identifier">a</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">b</span>
170
+ 9: <span class="ruby-keyword kw">end</span>
171
+ </pre>
172
+ </div>
173
+ </div>
174
+ </div>
175
+
176
+
177
+ </div>
178
+
179
+
180
+ </div>
181
+
182
+
183
+ <div id="validator-badges">
184
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
185
+ </div>
186
+
187
+ </body>
188
+ </html>
@@ -0,0 +1,203 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Module</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Module</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/extensions/module_rb.html">
59
+ lib/extensions/module.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ <a href="Object.html">
69
+ Object
70
+ </a>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+
83
+
84
+
85
+ </div>
86
+
87
+ <div id="method-list">
88
+ <h3 class="section-bar">Methods</h3>
89
+
90
+ <div class="name-list">
91
+ <a href="#M000014">convert_security_of_methods</a>&nbsp;&nbsp;
92
+ <a href="#M000015">include_safely_into</a>&nbsp;&nbsp;
93
+ </div>
94
+ </div>
95
+
96
+ </div>
97
+
98
+
99
+ <!-- if includes -->
100
+
101
+ <div id="section">
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+ <!-- if method_list -->
111
+ <div id="methods">
112
+ <h3 class="section-bar">Public Instance methods</h3>
113
+
114
+ <div id="method-M000014" class="method-detail">
115
+ <a name="M000014"></a>
116
+
117
+ <div class="method-heading">
118
+ <a href="#M000014" class="method-signature">
119
+ <span class="method-name">convert_security_of_methods</span><span class="method-args">(old_level = :public, new_level = :protected)</span>
120
+ </a>
121
+ </div>
122
+
123
+ <div class="method-description">
124
+ <p>
125
+ Bulk converts the security level of methods in this <a
126
+ href="Module.html">Module</a> from one level to another.
127
+ </p>
128
+ <p><a class="source-toggle" href="#"
129
+ onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
130
+ <div class="method-source-code" id="M000014-source">
131
+ <pre>
132
+ <span class="ruby-comment cmt"># File lib/extensions/module.rb, line 4</span>
133
+ 4: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convert_security_of_methods</span>(<span class="ruby-identifier">old_level</span> = <span class="ruby-identifier">:public</span>, <span class="ruby-identifier">new_level</span> = <span class="ruby-identifier">:protected</span>)
134
+ 5: <span class="ruby-identifier">eval</span>(<span class="ruby-node">&quot;#{old_level}_instance_methods&quot;</span>).<span class="ruby-identifier">each</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">meth</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">new_level</span>, <span class="ruby-identifier">meth</span>) }
135
+ 6: <span class="ruby-keyword kw">self</span>
136
+ 7: <span class="ruby-keyword kw">end</span>
137
+ </pre>
138
+ </div>
139
+ </div>
140
+ </div>
141
+
142
+ <div id="method-M000015" class="method-detail">
143
+ <a name="M000015"></a>
144
+
145
+ <div class="method-heading">
146
+ <a href="#M000015" class="method-signature">
147
+ <span class="method-name">include_safely_into</span><span class="method-args">(*args)</span>
148
+ </a>
149
+ </div>
150
+
151
+ <div class="method-description">
152
+ <p>
153
+ Includes this module into a <a href="Class.html">Class</a>, and changes all
154
+ public methods to protected.
155
+ </p>
156
+ <p>
157
+ Examples:
158
+ </p>
159
+ <pre>
160
+ module MyCoolUtils
161
+ def some_meth
162
+ &quot;hi&quot;
163
+ end
164
+ self.include_safely_into(FooController)
165
+ end
166
+ </pre>
167
+ <p>
168
+ or:
169
+ </p>
170
+ <pre>
171
+ MyCoolUtils.include_safely_into(FooController, SomeOtherClass)
172
+ </pre>
173
+ <p><a class="source-toggle" href="#"
174
+ onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
175
+ <div class="method-source-code" id="M000015-source">
176
+ <pre>
177
+ <span class="ruby-comment cmt"># File lib/extensions/module.rb, line 20</span>
178
+ 20: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">include_safely_into</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
179
+ 21: [<span class="ruby-identifier">args</span>].<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span>
180
+ 22: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">String</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Symbol</span>)
181
+ 23: <span class="ruby-identifier">a</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">constantize</span>
182
+ 24: <span class="ruby-keyword kw">end</span>
183
+ 25: <span class="ruby-identifier">a</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">:include</span>, <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">convert_security_of_methods</span>)
184
+ 26: <span class="ruby-keyword kw">end</span>
185
+ 27: <span class="ruby-keyword kw">end</span>
186
+ </pre>
187
+ </div>
188
+ </div>
189
+ </div>
190
+
191
+
192
+ </div>
193
+
194
+
195
+ </div>
196
+
197
+
198
+ <div id="validator-badges">
199
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
200
+ </div>
201
+
202
+ </body>
203
+ </html>
@@ -0,0 +1,558 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Object</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Object</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/extensions/object_rb.html">
59
+ lib/extensions/object.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ <a href="Object.html">
69
+ Object
70
+ </a>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+
83
+
84
+
85
+ </div>
86
+
87
+ <div id="method-list">
88
+ <h3 class="section-bar">Methods</h3>
89
+
90
+ <div class="name-list">
91
+ <a href="#M000022">class_parents</a>&nbsp;&nbsp;
92
+ <a href="#M000027">ivar_cache</a>&nbsp;&nbsp;
93
+ <a href="#M000028">ivar_cache_clear</a>&nbsp;&nbsp;
94
+ <a href="#M000029">namespaces</a>&nbsp;&nbsp;
95
+ <a href="#M000024">needs_method</a>&nbsp;&nbsp;
96
+ <a href="#M000020">print_methods</a>&nbsp;&nbsp;
97
+ <a href="#M000025">running_time</a>&nbsp;&nbsp;
98
+ <a href="#M000019">safely_include_module</a>&nbsp;&nbsp;
99
+ <a href="#M000026">send_with_chain</a>&nbsp;&nbsp;
100
+ <a href="#M000023">to_param</a>&nbsp;&nbsp;
101
+ <a href="#M000021">with_options</a>&nbsp;&nbsp;
102
+ </div>
103
+ </div>
104
+
105
+ </div>
106
+
107
+
108
+ <!-- if includes -->
109
+
110
+ <div id="section">
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+ <!-- if method_list -->
120
+ <div id="methods">
121
+ <h3 class="section-bar">Public Class methods</h3>
122
+
123
+ <div id="method-M000024" class="method-detail">
124
+ <a name="M000024"></a>
125
+
126
+ <div class="method-heading">
127
+ <a href="#M000024" class="method-signature">
128
+ <span class="method-name">needs_method</span><span class="method-args">(meth)</span>
129
+ </a>
130
+ </div>
131
+
132
+ <div class="method-description">
133
+ <p>
134
+ Uses <tt>define_method</tt> to create an empty for the method parameter
135
+ defined. That method will then raise MethodNotImplemented. This is useful
136
+ for creating interfaces and you want to stub out methods that others need
137
+ to implement.
138
+ </p>
139
+ <p><a class="source-toggle" href="#"
140
+ onclick="toggleCode('M000024-source');return false;">[Source]</a></p>
141
+ <div class="method-source-code" id="M000024-source">
142
+ <pre>
143
+ <span class="ruby-comment cmt"># File lib/extensions/object.rb, line 56</span>
144
+ 56: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">needs_method</span>(<span class="ruby-identifier">meth</span>)
145
+ 57: <span class="ruby-identifier">define_method</span>(<span class="ruby-identifier">meth</span>) <span class="ruby-keyword kw">do</span>
146
+ 58: <span class="ruby-identifier">raise</span> <span class="ruby-constant">NoMethodError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;The interface you are using requires you define the following method '#{meth}'&quot;</span>)
147
+ 59: <span class="ruby-keyword kw">end</span>
148
+ 60: <span class="ruby-keyword kw">end</span>
149
+ </pre>
150
+ </div>
151
+ </div>
152
+ </div>
153
+
154
+ <h3 class="section-bar">Public Instance methods</h3>
155
+
156
+ <div id="method-M000022" class="method-detail">
157
+ <a name="M000022"></a>
158
+
159
+ <div class="method-heading">
160
+ <a href="#M000022" class="method-signature">
161
+ <span class="method-name">class_parents</span><span class="method-args">()</span>
162
+ </a>
163
+ </div>
164
+
165
+ <div class="method-description">
166
+ <p>
167
+ See <a href="Class.html">Class</a> parents for more information.
168
+ </p>
169
+ <p><a class="source-toggle" href="#"
170
+ onclick="toggleCode('M000022-source');return false;">[Source]</a></p>
171
+ <div class="method-source-code" id="M000022-source">
172
+ <pre>
173
+ <span class="ruby-comment cmt"># File lib/extensions/object.rb, line 43</span>
174
+ 43: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">class_parents</span>
175
+ 44: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">parents</span>
176
+ 45: <span class="ruby-keyword kw">end</span>
177
+ </pre>
178
+ </div>
179
+ </div>
180
+ </div>
181
+
182
+ <div id="method-M000027" class="method-detail">
183
+ <a name="M000027"></a>
184
+
185
+ <div class="method-heading">
186
+ <a href="#M000027" class="method-signature">
187
+ <span class="method-name">ivar_cache</span><span class="method-args">(var_name = nil) {|| ...}</span>
188
+ </a>
189
+ </div>
190
+
191
+ <div class="method-description">
192
+ <p>
193
+ <a href="Object.html#M000027">ivar_cache</a> allows you to cache the
194
+ results of the block into an instance variable in a class, and then will
195
+ serve up that instance variable the next time you call that method again.
196
+ </p>
197
+ <p>
198
+ old way:
199
+ </p>
200
+ <pre>
201
+ def show_page_link
202
+ unless @show_page_link # check if instance variable exists
203
+ # if the instance variable doesn't exist let's do some work and assign it to the instance variable.
204
+ @show_page_link = link_to(&quot;show&quot;, some_url(:id =&gt; self.id, :foo =&gt; bar, etc... =&gt; etc))
205
+ end
206
+ @show_page_link # now return the instance variable
207
+ end
208
+ </pre>
209
+ <p>
210
+ new way:
211
+ </p>
212
+ <pre>
213
+ def show_page_link
214
+ ivar_cache do
215
+ link_to(&quot;show&quot;, some_url(:id =&gt; self.id, :foo =&gt; bar, etc... =&gt; etc))
216
+ end
217
+ end
218
+ </pre>
219
+ <p>
220
+ this does everything the old way did, but it is much cleaner, and a lot
221
+ less code! in case you&#8216;re wondering it caches the result, by default,
222
+ to an instance variable named after the method, so in our above example the
223
+ instance variable would be name, <tt>@show_page_link</tt>. this can be
224
+ overridden like such:
225
+ </p>
226
+ <pre>
227
+ def show_page_link
228
+ ivar_cache(&quot;foo_var&quot;) do
229
+ link_to(&quot;show&quot;, some_url(:id =&gt; self.id, :foo =&gt; bar, etc... =&gt; etc))
230
+ end
231
+ end
232
+ </pre>
233
+ <p>
234
+ now it will cache it to <tt>@foo_var</tt>
235
+ </p>
236
+ <p><a class="source-toggle" href="#"
237
+ onclick="toggleCode('M000027-source');return false;">[Source]</a></p>
238
+ <div class="method-source-code" id="M000027-source">
239
+ <pre>
240
+ <span class="ruby-comment cmt"># File lib/extensions/object.rb, line 129</span>
241
+ 129: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ivar_cache</span>(<span class="ruby-identifier">var_name</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
242
+ 130: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">var_name</span>.<span class="ruby-identifier">nil?</span>
243
+ 131: <span class="ruby-identifier">call</span> = <span class="ruby-identifier">caller</span>[<span class="ruby-value">0</span>]
244
+ 132: <span class="ruby-identifier">var_name</span> = <span class="ruby-identifier">call</span>[(<span class="ruby-identifier">call</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">'`'</span>)<span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">call</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">&quot;'&quot;</span>)]
245
+ 133: <span class="ruby-keyword kw">end</span>
246
+ 134: <span class="ruby-identifier">var</span> = <span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-node">&quot;@#{var_name}&quot;</span>)
247
+ 135: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">var</span>
248
+ 136: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-node">&quot;@#{var_name}&quot;</span>, <span class="ruby-keyword kw">yield</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
249
+ 137: <span class="ruby-keyword kw">end</span>
250
+ 138: <span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-node">&quot;@#{var_name}&quot;</span>)
251
+ 139: <span class="ruby-keyword kw">end</span>
252
+ </pre>
253
+ </div>
254
+ </div>
255
+ </div>
256
+
257
+ <div id="method-M000028" class="method-detail">
258
+ <a name="M000028"></a>
259
+
260
+ <div class="method-heading">
261
+ <a href="#M000028" class="method-signature">
262
+ <span class="method-name">ivar_cache_clear</span><span class="method-args">(var_name = nil) {|if block_given?| ...}</span>
263
+ </a>
264
+ </div>
265
+
266
+ <div class="method-description">
267
+ <p><a class="source-toggle" href="#"
268
+ onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
269
+ <div class="method-source-code" id="M000028-source">
270
+ <pre>
271
+ <span class="ruby-comment cmt"># File lib/extensions/object.rb, line 141</span>
272
+ 141: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ivar_cache_clear</span>(<span class="ruby-identifier">var_name</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
273
+ 142: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">var_name</span>.<span class="ruby-identifier">nil?</span>
274
+ 143: <span class="ruby-identifier">call</span> = <span class="ruby-identifier">caller</span>[<span class="ruby-value">0</span>]
275
+ 144: <span class="ruby-identifier">var_name</span> = <span class="ruby-identifier">call</span>[(<span class="ruby-identifier">call</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">'`'</span>)<span class="ruby-operator">+</span><span class="ruby-value">1</span>)<span class="ruby-operator">...</span><span class="ruby-identifier">call</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">&quot;'&quot;</span>)]
276
+ 145: <span class="ruby-keyword kw">end</span>
277
+ 146: <span class="ruby-identifier">remove_instance_variable</span>(<span class="ruby-node">&quot;@#{var_name}&quot;</span>) <span class="ruby-comment cmt">#rescue</span>
278
+ 147: <span class="ruby-keyword kw">yield</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
279
+ 148: <span class="ruby-keyword kw">end</span>
280
+ </pre>
281
+ </div>
282
+ </div>
283
+ </div>
284
+
285
+ <div id="method-M000029" class="method-detail">
286
+ <a name="M000029"></a>
287
+
288
+ <div class="method-heading">
289
+ <a href="#M000029" class="method-signature">
290
+ <span class="method-name">namespaces</span><span class="method-args">()</span>
291
+ </a>
292
+ </div>
293
+
294
+ <div class="method-description">
295
+ <p>
296
+ Returns the <a href="Object.html#M000029">namespaces</a> for a particular
297
+ object.
298
+ </p>
299
+ <p>
300
+ Examples:
301
+ </p>
302
+ <pre>
303
+ Animals::Dog::Poodle.new.namespaces # =&gt; [&quot;Animals&quot;, &quot;Dog&quot;]
304
+ </pre>
305
+ <p><a class="source-toggle" href="#"
306
+ onclick="toggleCode('M000029-source');return false;">[Source]</a></p>
307
+ <div class="method-source-code" id="M000029-source">
308
+ <pre>
309
+ <span class="ruby-comment cmt"># File lib/extensions/object.rb, line 154</span>
310
+ 154: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">namespaces</span>
311
+ 155: <span class="ruby-identifier">ivar_cache</span>(<span class="ruby-value str">&quot;object_namespaces&quot;</span>) <span class="ruby-keyword kw">do</span>
312
+ 156: <span class="ruby-identifier">nss</span> = []
313
+ 157: <span class="ruby-identifier">full_name</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>
314
+ 158: <span class="ruby-identifier">nss</span> = <span class="ruby-identifier">full_name</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">&quot;::&quot;</span>)
315
+ 159: <span class="ruby-identifier">nss</span>.<span class="ruby-identifier">pop</span>
316
+ 160: <span class="ruby-identifier">nss</span>
317
+ 161: <span class="ruby-keyword kw">end</span>
318
+ 162: <span class="ruby-keyword kw">end</span>
319
+ </pre>
320
+ </div>
321
+ </div>
322
+ </div>
323
+
324
+ <div id="method-M000020" class="method-detail">
325
+ <a name="M000020"></a>
326
+
327
+ <div class="method-heading">
328
+ <a href="#M000020" class="method-signature">
329
+ <span class="method-name">print_methods</span><span class="method-args">()</span>
330
+ </a>
331
+ </div>
332
+
333
+ <div class="method-description">
334
+ <p>
335
+ Prints out the methods associated with this object in alphabetical order.
336
+ </p>
337
+ <p><a class="source-toggle" href="#"
338
+ onclick="toggleCode('M000020-source');return false;">[Source]</a></p>
339
+ <div class="method-source-code" id="M000020-source">
340
+ <pre>
341
+ <span class="ruby-comment cmt"># File lib/extensions/object.rb, line 16</span>
342
+ 16: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">print_methods</span>
343
+ 17: <span class="ruby-identifier">m</span> = <span class="ruby-node">&quot;----- #{self} (methods) -----\n&quot;</span>
344
+ 18: <span class="ruby-identifier">m</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">methods</span>.<span class="ruby-identifier">sort</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n&quot;</span>)
345
+ 19: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">m</span>
346
+ 20: <span class="ruby-identifier">m</span>
347
+ 21: <span class="ruby-keyword kw">end</span>
348
+ </pre>
349
+ </div>
350
+ </div>
351
+ </div>
352
+
353
+ <div id="method-M000025" class="method-detail">
354
+ <a name="M000025"></a>
355
+
356
+ <div class="method-heading">
357
+ <a href="#M000025" class="method-signature">
358
+ <span class="method-name">running_time</span><span class="method-args">(message = &quot;&quot;, logger = nil) {|if block_given?| ...}</span>
359
+ </a>
360
+ </div>
361
+
362
+ <div class="method-description">
363
+ <p>
364
+ This prints out running time for the block provided. This is great for
365
+ things like Rake tasks, etc&#8230; where you would like to know how long
366
+ it, or a section of it took to run.
367
+ </p>
368
+ <p><a class="source-toggle" href="#"
369
+ onclick="toggleCode('M000025-source');return false;">[Source]</a></p>
370
+ <div class="method-source-code" id="M000025-source">
371
+ <pre>
372
+ <span class="ruby-comment cmt"># File lib/extensions/object.rb, line 65</span>
373
+ 65: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">running_time</span>(<span class="ruby-identifier">message</span> = <span class="ruby-value str">&quot;&quot;</span>, <span class="ruby-identifier">logger</span> = <span class="ruby-keyword kw">nil</span>)
374
+ 66: <span class="ruby-identifier">s_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
375
+ 67: <span class="ruby-identifier">s</span> = <span class="ruby-node">&quot;---Starting at #{s_time}---&quot;</span>
376
+ 68: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">s</span>
377
+ 69: <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-identifier">s</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">nil?</span>
378
+ 70: <span class="ruby-keyword kw">yield</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
379
+ 71: <span class="ruby-identifier">e_time</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
380
+ 72: <span class="ruby-identifier">e</span> = <span class="ruby-node">&quot;---Ending at #{e_time}---&quot;</span>
381
+ 73: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">e</span>
382
+ 74: <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-identifier">e</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">nil?</span>
383
+ 75: <span class="ruby-identifier">secs</span> = <span class="ruby-identifier">e_time</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">s_time</span>
384
+ 76: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">secs</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">60</span>
385
+ 77: <span class="ruby-identifier">x</span> = <span class="ruby-node">&quot;Running time #{secs} seconds.&quot;</span>
386
+ 78: <span class="ruby-keyword kw">else</span>
387
+ 79: <span class="ruby-identifier">x</span> = <span class="ruby-node">&quot;Running time roughly #{secs/60} minutes [#{secs} seconds]&quot;</span>
388
+ 80: <span class="ruby-keyword kw">end</span>
389
+ 81: <span class="ruby-identifier">x</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot; [MESSAGE]: #{message}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">message</span>.<span class="ruby-identifier">blank?</span>
390
+ 82: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">x</span>
391
+ 83: <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">info</span> <span class="ruby-identifier">x</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">logger</span>.<span class="ruby-identifier">nil?</span>
392
+ 84: <span class="ruby-keyword kw">end</span>
393
+ </pre>
394
+ </div>
395
+ </div>
396
+ </div>
397
+
398
+ <div id="method-M000019" class="method-detail">
399
+ <a name="M000019"></a>
400
+
401
+ <div class="method-heading">
402
+ <a href="#M000019" class="method-signature">
403
+ <span class="method-name">safely_include_module</span><span class="method-args">(*modules)</span>
404
+ </a>
405
+ </div>
406
+
407
+ <div class="method-description">
408
+ <p>
409
+ Includes a module into the current <a href="Class.html">Class</a>, and
410
+ changes all the module&#8216;s public methods to protected.
411
+ </p>
412
+ <p>
413
+ Example:
414
+ </p>
415
+ <pre>
416
+ class FooController
417
+ safely_include_module(MyCoolUtils, MyOtherModule)
418
+ end
419
+ </pre>
420
+ <p><a class="source-toggle" href="#"
421
+ onclick="toggleCode('M000019-source');return false;">[Source]</a></p>
422
+ <div class="method-source-code" id="M000019-source">
423
+ <pre>
424
+ <span class="ruby-comment cmt"># File lib/extensions/object.rb, line 9</span>
425
+ 9: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">safely_include_module</span>(<span class="ruby-operator">*</span><span class="ruby-identifier">modules</span>)
426
+ 10: [<span class="ruby-identifier">modules</span>].<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">mod</span><span class="ruby-operator">|</span>
427
+ 11: <span class="ruby-identifier">mod</span>.<span class="ruby-identifier">include_safely_into</span>(<span class="ruby-keyword kw">self</span>)
428
+ 12: <span class="ruby-keyword kw">end</span>
429
+ 13: <span class="ruby-keyword kw">end</span>
430
+ </pre>
431
+ </div>
432
+ </div>
433
+ </div>
434
+
435
+ <div id="method-M000026" class="method-detail">
436
+ <a name="M000026"></a>
437
+
438
+ <div class="method-heading">
439
+ <a href="#M000026" class="method-signature">
440
+ <span class="method-name">send_with_chain</span><span class="method-args">(methods, *args)</span>
441
+ </a>
442
+ </div>
443
+
444
+ <div class="method-description">
445
+ <p>
446
+ This method will call send to all the methods defined on the previous
447
+ method.
448
+ </p>
449
+ <p>
450
+ Example:
451
+ </p>
452
+ <pre>
453
+ Fruit.send_with_chain([:new, :get_citrus, :get_orange, :class]) # =&gt; Orange
454
+ </pre>
455
+ <p>
456
+ This would be the equivalent:
457
+ </p>
458
+ <pre>
459
+ Fruit.new.get_citrus.get_orange.class
460
+ </pre>
461
+ <p><a class="source-toggle" href="#"
462
+ onclick="toggleCode('M000026-source');return false;">[Source]</a></p>
463
+ <div class="method-source-code" id="M000026-source">
464
+ <pre>
465
+ <span class="ruby-comment cmt"># File lib/extensions/object.rb, line 93</span>
466
+ 93: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">send_with_chain</span>(<span class="ruby-identifier">methods</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)
467
+ 94: <span class="ruby-identifier">obj</span> = <span class="ruby-keyword kw">self</span>
468
+ 95: [<span class="ruby-identifier">methods</span>].<span class="ruby-identifier">flatten</span>.<span class="ruby-identifier">each</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-identifier">obj</span> = <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">m</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>)}
469
+ 96: <span class="ruby-identifier">obj</span>
470
+ 97: <span class="ruby-keyword kw">end</span>
471
+ </pre>
472
+ </div>
473
+ </div>
474
+ </div>
475
+
476
+ <div id="method-M000023" class="method-detail">
477
+ <a name="M000023"></a>
478
+
479
+ <div class="method-heading">
480
+ <a href="#M000023" class="method-signature">
481
+ <span class="method-name">to_param</span><span class="method-args">()</span>
482
+ </a>
483
+ </div>
484
+
485
+ <div class="method-description">
486
+ <p>
487
+ This method gets called when a parameter is passed into a named route. This
488
+ can be overridden in an <a href="Object.html">Object</a> to provlde custom
489
+ handling of parameters.
490
+ </p>
491
+ <p><a class="source-toggle" href="#"
492
+ onclick="toggleCode('M000023-source');return false;">[Source]</a></p>
493
+ <div class="method-source-code" id="M000023-source">
494
+ <pre>
495
+ <span class="ruby-comment cmt"># File lib/extensions/object.rb, line 49</span>
496
+ 49: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_param</span>
497
+ 50: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">to_s</span>
498
+ 51: <span class="ruby-keyword kw">end</span>
499
+ </pre>
500
+ </div>
501
+ </div>
502
+ </div>
503
+
504
+ <div id="method-M000021" class="method-detail">
505
+ <a name="M000021"></a>
506
+
507
+ <div class="method-heading">
508
+ <a href="#M000021" class="method-signature">
509
+ <span class="method-name">with_options</span><span class="method-args">(options) {|Mack::Utils::OptionMerger.new(self, options)| ...}</span>
510
+ </a>
511
+ </div>
512
+
513
+ <div class="method-description">
514
+ <p>
515
+ An elegant way to refactor out common options
516
+ </p>
517
+ <pre>
518
+ with_options :order =&gt; 'created_at', :class_name =&gt; 'Comment' do |post|
519
+ post.has_many :comments, :conditions =&gt; ['approved = ?', true], :dependent =&gt; :delete_all
520
+ post.has_many :unapproved_comments, :conditions =&gt; ['approved = ?', false]
521
+ post.has_many :all_comments
522
+ end
523
+ </pre>
524
+ <p>
525
+ Can also be used with an explicit receiver:
526
+ </p>
527
+ <pre>
528
+ map.with_options :controller =&gt; &quot;people&quot; do |people|
529
+ people.connect &quot;/people&quot;, :action =&gt; &quot;index&quot;
530
+ people.connect &quot;/people/:id&quot;, :action =&gt; &quot;show&quot;
531
+ end
532
+ </pre>
533
+ <p><a class="source-toggle" href="#"
534
+ onclick="toggleCode('M000021-source');return false;">[Source]</a></p>
535
+ <div class="method-source-code" id="M000021-source">
536
+ <pre>
537
+ <span class="ruby-comment cmt"># File lib/extensions/object.rb, line 38</span>
538
+ 38: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">with_options</span>(<span class="ruby-identifier">options</span>)
539
+ 39: <span class="ruby-keyword kw">yield</span> <span class="ruby-constant">Mack</span><span class="ruby-operator">::</span><span class="ruby-constant">Utils</span><span class="ruby-operator">::</span><span class="ruby-constant">OptionMerger</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">options</span>)
540
+ 40: <span class="ruby-keyword kw">end</span>
541
+ </pre>
542
+ </div>
543
+ </div>
544
+ </div>
545
+
546
+
547
+ </div>
548
+
549
+
550
+ </div>
551
+
552
+
553
+ <div id="validator-badges">
554
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
555
+ </div>
556
+
557
+ </body>
558
+ </html>