Capcode 0.8.4 → 0.8.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.
Files changed (47) hide show
  1. data/README.rdoc +58 -0
  2. data/doc/rdoc/classes/Capcode.html +938 -0
  3. data/doc/rdoc/classes/Capcode/Base.html +136 -0
  4. data/doc/rdoc/classes/Capcode/HTTPError.html +134 -0
  5. data/doc/rdoc/classes/Capcode/Helpers.html +608 -0
  6. data/doc/rdoc/classes/Capcode/Helpers/Authorization.html +188 -0
  7. data/doc/rdoc/classes/Capcode/Mab.html +118 -0
  8. data/doc/rdoc/classes/Capcode/Resource.html +111 -0
  9. data/doc/rdoc/classes/Capcode/Views.html +112 -0
  10. data/doc/rdoc/created.rid +1 -0
  11. data/doc/rdoc/files/AUTHORS.html +107 -0
  12. data/doc/rdoc/files/COPYING.html +531 -0
  13. data/doc/rdoc/files/README_rdoc.html +601 -0
  14. data/doc/rdoc/files/lib/capcode/base/db_rb.html +101 -0
  15. data/doc/rdoc/files/lib/capcode/helpers/auth_rb.html +132 -0
  16. data/doc/rdoc/files/lib/capcode/render/erb_rb.html +108 -0
  17. data/doc/rdoc/files/lib/capcode/render/haml_rb.html +108 -0
  18. data/doc/rdoc/files/lib/capcode/render/json_rb.html +108 -0
  19. data/doc/rdoc/files/lib/capcode/render/markaby_rb.html +108 -0
  20. data/doc/rdoc/files/lib/capcode/render/sass_rb.html +108 -0
  21. data/doc/rdoc/files/lib/capcode/render/static_rb.html +101 -0
  22. data/doc/rdoc/files/lib/capcode/render/text_rb.html +101 -0
  23. data/doc/rdoc/files/lib/capcode/render/webdav_rb.html +124 -0
  24. data/doc/rdoc/files/lib/capcode/render/xml_rb.html +101 -0
  25. data/doc/rdoc/files/lib/capcode_rb.html +119 -0
  26. data/doc/rdoc/fr_class_index.html +34 -0
  27. data/doc/rdoc/fr_file_index.html +41 -0
  28. data/doc/rdoc/fr_method_index.html +44 -0
  29. data/doc/rdoc/index.html +24 -0
  30. data/doc/rdoc/rdoc-style.css +208 -0
  31. data/examples/auth-basic.rb +46 -0
  32. data/examples/auth-digest.rb +47 -0
  33. data/examples/auth-webdav.rb +29 -0
  34. data/examples/blog-couchdb-run.rb +10 -0
  35. data/examples/blog-couchdb.rb +8 -8
  36. data/examples/blog-couchdb.ru +12 -0
  37. data/examples/render-static.rb +1 -1
  38. data/examples/render-static.ru +21 -0
  39. data/examples/render-webdav.rb +26 -0
  40. data/examples/rest-run.rb +3 -0
  41. data/examples/rest.rb +1 -1
  42. data/examples/rest.ru +3 -0
  43. data/lib/capcode.rb +196 -100
  44. data/lib/capcode/helpers/auth.rb +130 -0
  45. data/lib/capcode/render/webdav.rb +45 -0
  46. data/lib/capcode/version.rb +1 -1
  47. metadata +45 -3
@@ -0,0 +1,136 @@
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: Capcode::Base</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">Capcode::Base</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/capcode/base/db_rb.html">
59
+ lib/capcode/base/db.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
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+ <div id="description">
82
+ <p>
83
+ This class allow you to define models
84
+ </p>
85
+ <pre>
86
+ class Story &lt; Capcode::Base
87
+ include Capcode::Resource
88
+
89
+ property :id, Integer, :serial =&gt; true
90
+ property :title, String
91
+ property :body, String
92
+ property :date, String
93
+ end
94
+ </pre>
95
+ <p>
96
+ If you want to use DataMapper, you need to require
97
+ &quot;capcode/base/dm&quot;, if you want to use CouchDB (via couch_foo),
98
+ you need to require &quot;capcode/base/couchdb&quot;.
99
+ </p>
100
+ <p>
101
+ Please, refer to the DataMapper or couch_foo documentation for more
102
+ information.
103
+ </p>
104
+
105
+ </div>
106
+
107
+
108
+ </div>
109
+
110
+
111
+ </div>
112
+
113
+
114
+ <!-- if includes -->
115
+
116
+ <div id="section">
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+ <!-- if method_list -->
126
+
127
+
128
+ </div>
129
+
130
+
131
+ <div id="validator-badges">
132
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
133
+ </div>
134
+
135
+ </body>
136
+ </html>
@@ -0,0 +1,134 @@
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: Capcode::HTTPError</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">Capcode::HTTPError</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/capcode_rb.html">
59
+ lib/capcode.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
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+ <div id="description">
82
+ <p>
83
+ <a href="HTTPError.html">HTTPError</a> help you to create your own 404, 500
84
+ and/or 501 response
85
+ </p>
86
+ <p>
87
+ To create a custom 404 reponse, create a fonction HTTPError.r404 in your
88
+ application :
89
+ </p>
90
+ <pre>
91
+ module Capcode
92
+ class HTTPError
93
+ def r404(f)
94
+ &quot;#{f} not found :(&quot;
95
+ end
96
+ end
97
+ end
98
+ </pre>
99
+ <p>
100
+ Do the same (r500, r501, r403) to customize 500, 501, 403 errors
101
+ </p>
102
+
103
+ </div>
104
+
105
+
106
+ </div>
107
+
108
+
109
+ </div>
110
+
111
+
112
+ <!-- if includes -->
113
+
114
+ <div id="section">
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+ <!-- if method_list -->
124
+
125
+
126
+ </div>
127
+
128
+
129
+ <div id="validator-badges">
130
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
131
+ </div>
132
+
133
+ </body>
134
+ </html>
@@ -0,0 +1,608 @@
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: Capcode::Helpers</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">Capcode::Helpers</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/lib/capcode_rb.html">
59
+ lib/capcode.rb
60
+ </a>
61
+ <br />
62
+ <a href="../../files/lib/capcode/render/erb_rb.html">
63
+ lib/capcode/render/erb.rb
64
+ </a>
65
+ <br />
66
+ <a href="../../files/lib/capcode/render/haml_rb.html">
67
+ lib/capcode/render/haml.rb
68
+ </a>
69
+ <br />
70
+ <a href="../../files/lib/capcode/render/json_rb.html">
71
+ lib/capcode/render/json.rb
72
+ </a>
73
+ <br />
74
+ <a href="../../files/lib/capcode/render/markaby_rb.html">
75
+ lib/capcode/render/markaby.rb
76
+ </a>
77
+ <br />
78
+ <a href="../../files/lib/capcode/render/sass_rb.html">
79
+ lib/capcode/render/sass.rb
80
+ </a>
81
+ <br />
82
+ <a href="../../files/lib/capcode/render/static_rb.html">
83
+ lib/capcode/render/static.rb
84
+ </a>
85
+ <br />
86
+ <a href="../../files/lib/capcode/render/text_rb.html">
87
+ lib/capcode/render/text.rb
88
+ </a>
89
+ <br />
90
+ <a href="../../files/lib/capcode/render/webdav_rb.html">
91
+ lib/capcode/render/webdav.rb
92
+ </a>
93
+ <br />
94
+ <a href="../../files/lib/capcode/render/xml_rb.html">
95
+ lib/capcode/render/xml.rb
96
+ </a>
97
+ <br />
98
+ <a href="../../files/lib/capcode/helpers/auth_rb.html">
99
+ lib/capcode/helpers/auth.rb
100
+ </a>
101
+ <br />
102
+ </td>
103
+ </tr>
104
+
105
+ </table>
106
+ </div>
107
+ <!-- banner header -->
108
+
109
+ <div id="bodyContent">
110
+
111
+
112
+
113
+ <div id="contextContent">
114
+
115
+ <div id="description">
116
+ <p>
117
+ <a href="Helpers.html">Helpers</a> contains methods available in your
118
+ controllers
119
+ </p>
120
+
121
+ </div>
122
+
123
+
124
+ </div>
125
+
126
+ <div id="method-list">
127
+ <h3 class="section-bar">Methods</h3>
128
+
129
+ <div class="name-list">
130
+ <a href="#M000014">URL</a>&nbsp;&nbsp;
131
+ <a href="#M000015">content_for</a>&nbsp;&nbsp;
132
+ <a href="#M000012">json</a>&nbsp;&nbsp;
133
+ <a href="#M000013">redirect</a>&nbsp;&nbsp;
134
+ <a href="#M000011">render</a>&nbsp;&nbsp;
135
+ <a href="#M000017">render_webdav</a>&nbsp;&nbsp;
136
+ <a href="#M000016">static</a>&nbsp;&nbsp;
137
+ </div>
138
+ </div>
139
+
140
+ </div>
141
+
142
+
143
+ <!-- if includes -->
144
+ <div id="includes">
145
+ <h3 class="section-bar">Included Modules</h3>
146
+
147
+ <div id="includes-list">
148
+ <span class="include-name"><a href="Helpers/Authorization.html">Authorization</a></span>
149
+ </div>
150
+ </div>
151
+
152
+ <div id="section">
153
+
154
+ <div id="class-list">
155
+ <h3 class="section-bar">Classes and Modules</h3>
156
+
157
+ Module <a href="Helpers/Authorization.html" class="link">Capcode::Helpers::Authorization</a><br />
158
+
159
+ </div>
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+ <!-- if method_list -->
168
+ <div id="methods">
169
+ <h3 class="section-bar">Public Instance methods</h3>
170
+
171
+ <div id="method-M000014" class="method-detail">
172
+ <a name="M000014"></a>
173
+
174
+ <div class="method-heading">
175
+ <a href="#M000014" class="method-signature">
176
+ <span class="method-name">URL</span><span class="method-args">( klass, *a )</span>
177
+ </a>
178
+ </div>
179
+
180
+ <div class="method-description">
181
+ <p>
182
+ Builds an <a href="Helpers.html#M000014">URL</a> route to a controller or a
183
+ path
184
+ </p>
185
+ <p>
186
+ if you declare the controller Hello :
187
+ </p>
188
+ <pre>
189
+ module Capcode
190
+ class Hello &lt; Route '/hello/(.*)'
191
+ ...
192
+ end
193
+ end
194
+ </pre>
195
+ <p>
196
+ then
197
+ </p>
198
+ <pre>
199
+ URL( Capcode::Hello, &quot;you&quot; ) # =&gt; /hello/you
200
+ </pre>
201
+ <p><a class="source-toggle" href="#"
202
+ onclick="toggleCode('M000014-source');return false;">[Source]</a></p>
203
+ <div class="method-source-code" id="M000014-source">
204
+ <pre>
205
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 164</span>
206
+ 164: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">URL</span>( <span class="ruby-identifier">klass</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">a</span> )
207
+ 165: <span class="ruby-identifier">path</span> = <span class="ruby-keyword kw">nil</span>
208
+ 166: <span class="ruby-identifier">a</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">delete_if</span>{ <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">nil?</span> }
209
+ 167:
210
+ 168: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">klass</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Class</span>
211
+ 169: <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">routes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">p</span>, <span class="ruby-identifier">k</span><span class="ruby-operator">|</span>
212
+ 170: <span class="ruby-identifier">path</span> = <span class="ruby-identifier">p</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">k</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">klass</span>
213
+ 171: <span class="ruby-keyword kw">end</span>
214
+ 172: <span class="ruby-keyword kw">else</span>
215
+ 173: <span class="ruby-identifier">path</span> = <span class="ruby-identifier">klass</span>
216
+ 174: <span class="ruby-keyword kw">end</span>
217
+ 175:
218
+ 176: (<span class="ruby-constant">ENV</span>[<span class="ruby-value str">'RACK_BASE_URI'</span>]<span class="ruby-operator">||</span><span class="ruby-value str">''</span>)<span class="ruby-operator">+</span><span class="ruby-identifier">path</span><span class="ruby-operator">+</span>((<span class="ruby-identifier">a</span>.<span class="ruby-identifier">size</span><span class="ruby-operator">&gt;</span><span class="ruby-value">0</span>)<span class="ruby-operator">?</span>(<span class="ruby-value str">&quot;/&quot;</span><span class="ruby-operator">+</span><span class="ruby-identifier">a</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;/&quot;</span>))<span class="ruby-operator">:</span>(<span class="ruby-value str">&quot;&quot;</span>))
219
+ 177: <span class="ruby-keyword kw">end</span>
220
+ </pre>
221
+ </div>
222
+ </div>
223
+ </div>
224
+
225
+ <div id="method-M000015" class="method-detail">
226
+ <a name="M000015"></a>
227
+
228
+ <div class="method-heading">
229
+ <a href="#M000015" class="method-signature">
230
+ <span class="method-name">content_for</span><span class="method-args">( x ) {|| ...}</span>
231
+ </a>
232
+ </div>
233
+
234
+ <div class="method-description">
235
+ <p>
236
+ Calling <a href="Helpers.html#M000015">content_for</a> stores a block of
237
+ markup in an identifier.
238
+ </p>
239
+ <pre>
240
+ module Capcode
241
+ class ContentFor &lt; Route '/'
242
+ def get
243
+ render( :markaby =&gt; :page, :layout =&gt; :layout )
244
+ end
245
+ end
246
+ end
247
+
248
+ module Capcode::Views
249
+ def layout
250
+ html do
251
+ head do
252
+ yield :header
253
+ end
254
+ body do
255
+ yield :content
256
+ end
257
+ end
258
+ end
259
+
260
+ def page
261
+ content_for :header do
262
+ title &quot;This is the title!&quot;
263
+ end
264
+
265
+ content_for :content do
266
+ p &quot;this is the content!&quot;
267
+ end
268
+ end
269
+ end
270
+ </pre>
271
+ <p><a class="source-toggle" href="#"
272
+ onclick="toggleCode('M000015-source');return false;">[Source]</a></p>
273
+ <div class="method-source-code" id="M000015-source">
274
+ <pre>
275
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 211</span>
276
+ 211: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">content_for</span>( <span class="ruby-identifier">x</span> )
277
+ 212: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@@__ARGS__</span>.<span class="ruby-identifier">map</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">_</span><span class="ruby-operator">|</span> <span class="ruby-identifier">_</span>.<span class="ruby-identifier">to_s</span> }.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_s</span>)
278
+ 213: <span class="ruby-keyword kw">yield</span>
279
+ 214: <span class="ruby-keyword kw">end</span>
280
+ 215: <span class="ruby-keyword kw">end</span>
281
+ </pre>
282
+ </div>
283
+ </div>
284
+ </div>
285
+
286
+ <div id="method-M000012" class="method-detail">
287
+ <a name="M000012"></a>
288
+
289
+ <div class="method-heading">
290
+ <a href="#M000012" class="method-signature">
291
+ <span class="method-name">json</span><span class="method-args">( d )</span>
292
+ </a>
293
+ </div>
294
+
295
+ <div class="method-description">
296
+ <p>
297
+ Help you to return a JSON response
298
+ </p>
299
+ <pre>
300
+ module Capcode
301
+ class JsonResponse &lt; Route '/json/([^\/]*)/(.*)'
302
+ def get( arg1, arg2 )
303
+ json( { :1 =&gt; arg1, :2 =&gt; arg2 })
304
+ end
305
+ end
306
+ end
307
+ </pre>
308
+ <p>
309
+ <b>DEPRECATED</b>, please use <tt><a
310
+ href="Helpers.html#M000011">render</a>( :<a
311
+ href="Helpers.html#M000012">json</a> =&gt; o )</tt>
312
+ </p>
313
+ <p><a class="source-toggle" href="#"
314
+ onclick="toggleCode('M000012-source');return false;">[Source]</a></p>
315
+ <div class="method-source-code" id="M000012-source">
316
+ <pre>
317
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 107</span>
318
+ 107: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">json</span>( <span class="ruby-identifier">d</span> ) <span class="ruby-comment cmt">## DELETE THIS IN 1.0.0</span>
319
+ 108: <span class="ruby-identifier">warn</span>( <span class="ruby-value str">&quot;json is deprecated, please use `render( :json =&gt; ... )'&quot;</span> )
320
+ 109: <span class="ruby-ivar">@response</span>[<span class="ruby-value str">'Content-Type'</span>] = <span class="ruby-value str">'application/json'</span>
321
+ 110: <span class="ruby-identifier">d</span>.<span class="ruby-identifier">to_json</span>
322
+ 111: <span class="ruby-keyword kw">end</span>
323
+ </pre>
324
+ </div>
325
+ </div>
326
+ </div>
327
+
328
+ <div id="method-M000013" class="method-detail">
329
+ <a name="M000013"></a>
330
+
331
+ <div class="method-heading">
332
+ <a href="#M000013" class="method-signature">
333
+ <span class="method-name">redirect</span><span class="method-args">( klass, *a )</span>
334
+ </a>
335
+ </div>
336
+
337
+ <div class="method-description">
338
+ <p>
339
+ Send a <a href="Helpers.html#M000013">redirect</a> response
340
+ </p>
341
+ <pre>
342
+ module Capcode
343
+ class Hello &lt; Route '/hello/(.*)'
344
+ def get( you )
345
+ if you.nil?
346
+ redirect( WhoAreYou )
347
+ else
348
+ ...
349
+ end
350
+ end
351
+ end
352
+ end
353
+ </pre>
354
+ <p>
355
+ The first parameter can be a controller class name
356
+ </p>
357
+ <pre>
358
+ redirect( MyController )
359
+ </pre>
360
+ <p>
361
+ it can be a string path
362
+ </p>
363
+ <pre>
364
+ redirect( &quot;/path/to/my/resource&quot; )
365
+ </pre>
366
+ <p>
367
+ it can be an http status code (by default <tt><a
368
+ href="Helpers.html#M000013">redirect</a></tt> use the http status code 302)
369
+ </p>
370
+ <pre>
371
+ redirect( 304, MyController )
372
+ </pre>
373
+ <p>
374
+ For more informations about HTTP status, see <a
375
+ href="http://en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection">en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection</a>
376
+ </p>
377
+ <p><a class="source-toggle" href="#"
378
+ onclick="toggleCode('M000013-source');return false;">[Source]</a></p>
379
+ <div class="method-source-code" id="M000013-source">
380
+ <pre>
381
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 140</span>
382
+ 140: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">redirect</span>( <span class="ruby-identifier">klass</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">a</span> )
383
+ 141: <span class="ruby-identifier">httpCode</span> = <span class="ruby-value">302</span>
384
+ 142:
385
+ 143: <span class="ruby-keyword kw">if</span>( <span class="ruby-identifier">klass</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Fixnum</span> )
386
+ 144: <span class="ruby-identifier">httpCode</span> = <span class="ruby-identifier">klass</span>
387
+ 145: <span class="ruby-identifier">klass</span> = <span class="ruby-identifier">a</span>.<span class="ruby-identifier">shift</span>
388
+ 146: <span class="ruby-keyword kw">end</span>
389
+ 147:
390
+ 148: [<span class="ruby-identifier">httpCode</span>, {<span class="ruby-value str">'Location'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">URL</span>(<span class="ruby-identifier">klass</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">a</span>)}, <span class="ruby-value str">''</span>]
391
+ 149: <span class="ruby-keyword kw">end</span>
392
+ </pre>
393
+ </div>
394
+ </div>
395
+ </div>
396
+
397
+ <div id="method-M000011" class="method-detail">
398
+ <a name="M000011"></a>
399
+
400
+ <div class="method-heading">
401
+ <a href="#M000011" class="method-signature">
402
+ <span class="method-name">render</span><span class="method-args">( hash )</span>
403
+ </a>
404
+ </div>
405
+
406
+ <div class="method-description">
407
+ <p>
408
+ Render a view
409
+ </p>
410
+ <p>
411
+ <a href="Helpers.html#M000011">render</a>&#8216;s parameter can be a Hash
412
+ or a string. Passing a string is equivalent to do
413
+ </p>
414
+ <pre>
415
+ render( :text =&gt; string )
416
+ </pre>
417
+ <p>
418
+ If you want to use a specific renderer, use one of this options :
419
+ </p>
420
+ <ul>
421
+ <li>:markaby =&gt; :my_func : :my_func must be defined in <a
422
+ href="Views.html">Capcode::Views</a>
423
+
424
+ </li>
425
+ <li>:erb =&gt; :my_erb_file : this suppose that&#8216;s my_erb_file.rhtml exist
426
+ in erb_path
427
+
428
+ </li>
429
+ <li>:haml =&gt; :my_haml_file : this suppose that&#8216;s my_haml_file.haml
430
+ exist in haml_path
431
+
432
+ </li>
433
+ <li>:sass =&gt; :my_sass_file : this suppose that&#8216;s my_sass_file.sass
434
+ exist in sass_path
435
+
436
+ </li>
437
+ <li>:text =&gt; &quot;my text&quot;
438
+
439
+ </li>
440
+ <li>:<a href="Helpers.html#M000012">json</a> =&gt; MyObject : this suppose
441
+ that&#8216;s MyObject respond to .to_json
442
+
443
+ </li>
444
+ <li>:<a href="Helpers.html#M000016">static</a> =&gt; &quot;my_file.xxx&quot; :
445
+ this suppose that&#8216;s my_file.xxx exist in the <a
446
+ href="Helpers.html#M000016">static</a> directory
447
+
448
+ </li>
449
+ <li>:xml =&gt; :my_func : :my_func must be defined in <a
450
+ href="Views.html">Capcode::Views</a>
451
+
452
+ </li>
453
+ <li>:webdav =&gt; /path/to/root
454
+
455
+ </li>
456
+ </ul>
457
+ <p>
458
+ If you want to use a specific layout, you can specify it with option
459
+ </p>
460
+ <pre>
461
+ :layout
462
+ </pre>
463
+ <p>
464
+ If you use the WebDav renderer, you can use the option
465
+ </p>
466
+ <pre>
467
+ :resource_class (see http://github.com/georgi/rack_dav for more informations)
468
+ </pre>
469
+ <p><a class="source-toggle" href="#"
470
+ onclick="toggleCode('M000011-source');return false;">[Source]</a></p>
471
+ <div class="method-source-code" id="M000011-source">
472
+ <pre>
473
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 63</span>
474
+ 63: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">render</span>( <span class="ruby-identifier">hash</span> )
475
+ 64: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">hash</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Hash</span>
476
+ 65: <span class="ruby-identifier">render_type</span> = <span class="ruby-keyword kw">nil</span>
477
+ 66:
478
+ 67: <span class="ruby-identifier">hash</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span><span class="ruby-operator">|</span>
479
+ 68: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-node">&quot;render_#{key.to_s}&quot;</span>)
480
+ 69: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">render_type</span>.<span class="ruby-identifier">nil?</span>
481
+ 70: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">RenderError</span>, <span class="ruby-node">&quot;Can't use multiple renderer (`#{render_type}' and `#{key}') !&quot;</span>, <span class="ruby-identifier">caller</span>
482
+ 71: <span class="ruby-keyword kw">end</span>
483
+ 72: <span class="ruby-identifier">render_type</span> = <span class="ruby-identifier">key</span>
484
+ 73: <span class="ruby-keyword kw">end</span>
485
+ 74: <span class="ruby-keyword kw">end</span>
486
+ 75:
487
+ 76: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">render_type</span>.<span class="ruby-identifier">nil?</span>
488
+ 77: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">RenderError</span>, <span class="ruby-value str">&quot;Renderer type not specified!&quot;</span>, <span class="ruby-identifier">caller</span>
489
+ 78: <span class="ruby-keyword kw">end</span>
490
+ 79:
491
+ 80: <span class="ruby-keyword kw">unless</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-node">&quot;render_#{render_type.to_s}&quot;</span>)
492
+ 81: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">RenderError</span>, <span class="ruby-node">&quot;#{render_type} renderer not present ! please require 'capcode/render/#{render_type}'&quot;</span>, <span class="ruby-identifier">caller</span>
493
+ 82: <span class="ruby-keyword kw">end</span>
494
+ 83:
495
+ 84: <span class="ruby-identifier">render_name</span> = <span class="ruby-identifier">hash</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">render_type</span>)
496
+ 85:
497
+ 86: <span class="ruby-keyword kw">begin</span>
498
+ 87: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>( <span class="ruby-node">&quot;render_#{render_type.to_s}&quot;</span>, <span class="ruby-identifier">render_name</span>, <span class="ruby-identifier">hash</span> )
499
+ 88: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
500
+ 89: <span class="ruby-identifier">raise</span> <span class="ruby-constant">Capcode</span><span class="ruby-operator">::</span><span class="ruby-constant">RenderError</span>, <span class="ruby-node">&quot;Error rendering `#{render_type.to_s}' : #{e.message}&quot;</span>, <span class="ruby-identifier">caller</span>
501
+ 90: <span class="ruby-keyword kw">end</span>
502
+ 91: <span class="ruby-keyword kw">else</span>
503
+ 92: <span class="ruby-identifier">render</span>( <span class="ruby-identifier">:text</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">hash</span> )
504
+ 93: <span class="ruby-keyword kw">end</span>
505
+ 94: <span class="ruby-keyword kw">end</span>
506
+ </pre>
507
+ </div>
508
+ </div>
509
+ </div>
510
+
511
+ <div id="method-M000017" class="method-detail">
512
+ <a name="M000017"></a>
513
+
514
+ <div class="method-heading">
515
+ <a href="#M000017" class="method-signature">
516
+ <span class="method-name">render_webdav</span><span class="method-args">( f, opts )</span>
517
+ </a>
518
+ </div>
519
+
520
+ <div class="method-description">
521
+ <p><a class="source-toggle" href="#"
522
+ onclick="toggleCode('M000017-source');return false;">[Source]</a></p>
523
+ <div class="method-source-code" id="M000017-source">
524
+ <pre>
525
+ <span class="ruby-comment cmt"># File lib/capcode/render/webdav.rb, line 19</span>
526
+ 19: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">render_webdav</span>( <span class="ruby-identifier">f</span>, <span class="ruby-identifier">opts</span> )
527
+ 20: <span class="ruby-identifier">options</span> = {
528
+ 21: <span class="ruby-identifier">:resource_class</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">RackDAV</span><span class="ruby-operator">::</span><span class="ruby-constant">FileResource</span>,
529
+ 22: <span class="ruby-identifier">:root</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">f</span>
530
+ 23: }.<span class="ruby-identifier">merge</span>(<span class="ruby-identifier">opts</span>)
531
+ 24:
532
+ 25: <span class="ruby-identifier">request</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Request</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">env</span>)
533
+ 26: <span class="ruby-identifier">response</span> = <span class="ruby-constant">Rack</span><span class="ruby-operator">::</span><span class="ruby-constant">Response</span>.<span class="ruby-identifier">new</span>
534
+ 27:
535
+ 28: <span class="ruby-keyword kw">begin</span>
536
+ 29: <span class="ruby-identifier">controller</span> = <span class="ruby-constant">RackDAV</span><span class="ruby-operator">::</span><span class="ruby-constant">Controller</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">request</span>, <span class="ruby-identifier">response</span>, <span class="ruby-identifier">options</span>.<span class="ruby-identifier">dup</span>)
537
+ 30: <span class="ruby-identifier">controller</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">request</span>.<span class="ruby-identifier">request_method</span>.<span class="ruby-identifier">downcase</span>)
538
+ 31: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">RackDAV</span><span class="ruby-operator">::</span><span class="ruby-constant">HTTPStatus</span><span class="ruby-operator">::</span><span class="ruby-constant">Status</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">status</span>
539
+ 32: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">status</span> = <span class="ruby-identifier">status</span>.<span class="ruby-identifier">code</span>
540
+ 33: <span class="ruby-keyword kw">end</span>
541
+ 34:
542
+ 35: <span class="ruby-comment cmt"># Strings in Ruby 1.9 are no longer enumerable. Rack still expects the response.body to be</span>
543
+ 36: <span class="ruby-comment cmt"># enumerable, however.</span>
544
+ 37: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span> = [<span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">not</span> <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>.<span class="ruby-identifier">respond_to?</span> <span class="ruby-identifier">:each</span>
545
+ 38:
546
+ 39: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">status</span> = <span class="ruby-identifier">response</span>.<span class="ruby-identifier">status</span> <span class="ruby-value">? </span><span class="ruby-identifier">response</span>.<span class="ruby-identifier">status</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">:</span> <span class="ruby-value">200</span>
547
+ 40: <span class="ruby-identifier">response</span>.<span class="ruby-identifier">finish</span>
548
+ 41:
549
+ 42: [<span class="ruby-identifier">response</span>.<span class="ruby-identifier">status</span>, <span class="ruby-identifier">response</span>.<span class="ruby-identifier">header</span>, <span class="ruby-identifier">response</span>.<span class="ruby-identifier">body</span>]
550
+ 43: <span class="ruby-keyword kw">end</span>
551
+ </pre>
552
+ </div>
553
+ </div>
554
+ </div>
555
+
556
+ <div id="method-M000016" class="method-detail">
557
+ <a name="M000016"></a>
558
+
559
+ <div class="method-heading">
560
+ <a href="#M000016" class="method-signature">
561
+ <span class="method-name">static</span><span class="method-args">()</span>
562
+ </a>
563
+ </div>
564
+
565
+ <div class="method-description">
566
+ <p>
567
+ Return information about the <a href="Helpers.html#M000016">static</a>
568
+ directory
569
+ </p>
570
+ <ul>
571
+ <li><tt><a href="Helpers.html#M000016">static</a>[:uri]</tt> give the <a
572
+ href="Helpers.html#M000016">static</a> URI
573
+
574
+ </li>
575
+ <li><tt><a href="Helpers.html#M000016">static</a>[:path]</tt> give the path to
576
+ the <a href="Helpers.html#M000016">static</a> directory on the server
577
+
578
+ </li>
579
+ </ul>
580
+ <p><a class="source-toggle" href="#"
581
+ onclick="toggleCode('M000016-source');return false;">[Source]</a></p>
582
+ <div class="method-source-code" id="M000016-source">
583
+ <pre>
584
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 221</span>
585
+ 221: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">static</span>
586
+ 222: {
587
+ 223: <span class="ruby-identifier">:uri</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">static</span>,
588
+ 224: <span class="ruby-identifier">:path</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">expand_path</span>( <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;.&quot;</span>, <span class="ruby-constant">Capcode</span>.<span class="ruby-identifier">static</span> ) )
589
+ 225: }
590
+ 226: <span class="ruby-keyword kw">end</span>
591
+ </pre>
592
+ </div>
593
+ </div>
594
+ </div>
595
+
596
+
597
+ </div>
598
+
599
+
600
+ </div>
601
+
602
+
603
+ <div id="validator-badges">
604
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
605
+ </div>
606
+
607
+ </body>
608
+ </html>