Capcode 0.8.4 → 0.8.5

Sign up to get free protection for your applications and to get access to all the features.
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>