Capcode 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -111,10 +111,10 @@ controllers
111
111
  <p class="source-link">[ <a href="javascript:toggleSource('M000009_source')" id="l_M000009_source">show source</a> ]</p>
112
112
  <div id="M000009_source" class="dyn-source">
113
113
  <pre>
114
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 26</span>
115
- 26: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">root=</span>(<span class="ruby-identifier">p</span>)
116
- 27: <span class="ruby-ivar">@@__ROOT_DIRECTORY</span>=<span class="ruby-identifier">p</span>
117
- 28: <span class="ruby-keyword kw">end</span>
114
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 27</span>
115
+ 27: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">root=</span>(<span class="ruby-identifier">p</span>)
116
+ 28: <span class="ruby-ivar">@@__ROOT_DIRECTORY</span>=<span class="ruby-identifier">p</span>
117
+ 29: <span class="ruby-keyword kw">end</span>
118
118
  </pre>
119
119
  </div>
120
120
  </div>
@@ -146,21 +146,42 @@ then
146
146
  <p class="source-link">[ <a href="javascript:toggleSource('M000013_source')" id="l_M000013_source">show source</a> ]</p>
147
147
  <div id="M000013_source" class="dyn-source">
148
148
  <pre>
149
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 91</span>
150
- 91: <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> )
151
- 92: <span class="ruby-identifier">path</span> = <span class="ruby-keyword kw">nil</span>
152
- 93: <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> }
153
- 94:
154
- 95: <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>
155
- 96: <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>
156
- 97: <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>
157
- 98: <span class="ruby-keyword kw">end</span>
158
- 99: <span class="ruby-keyword kw">else</span>
159
- 100: <span class="ruby-identifier">path</span> = <span class="ruby-identifier">klass</span>
160
- 101: <span class="ruby-keyword kw">end</span>
161
- 102:
162
- 103: <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>))
163
- 104: <span class="ruby-keyword kw">end</span>
149
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 120</span>
150
+ 120: <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> )
151
+ 121: <span class="ruby-identifier">path</span> = <span class="ruby-keyword kw">nil</span>
152
+ 122: <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> }
153
+ 123:
154
+ 124: <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>
155
+ 125: <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>
156
+ 126: <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>
157
+ 127: <span class="ruby-keyword kw">end</span>
158
+ 128: <span class="ruby-keyword kw">else</span>
159
+ 129: <span class="ruby-identifier">path</span> = <span class="ruby-identifier">klass</span>
160
+ 130: <span class="ruby-keyword kw">end</span>
161
+ 131:
162
+ 132: <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>))
163
+ 133: <span class="ruby-keyword kw">end</span>
164
+ </pre>
165
+ </div>
166
+ </div>
167
+ <h4 class="ruled">Public Instance method:
168
+ <strong><a name="M000014">content_for( x ) {|| ...}</a></strong> <a href="#M000014"><img src="../../permalink.gif" border="0" title="Permalink to Public Instance method: content_for" /></a></h4>
169
+
170
+ <p>
171
+ Calling <a href="Helpers.html#M000014">content_for</a> stores a block of
172
+ markup in an identifier.
173
+ </p>
174
+
175
+ <div class="sourcecode">
176
+ <p class="source-link">[ <a href="javascript:toggleSource('M000014_source')" id="l_M000014_source">show source</a> ]</p>
177
+ <div id="M000014_source" class="dyn-source">
178
+ <pre>
179
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 136</span>
180
+ 136: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">content_for</span>( <span class="ruby-identifier">x</span> )
181
+ 137: <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>)
182
+ 138: <span class="ruby-keyword kw">yield</span>
183
+ 139: <span class="ruby-keyword kw">end</span>
184
+ 140: <span class="ruby-keyword kw">end</span>
164
185
  </pre>
165
186
  </div>
166
187
  </div>
@@ -184,12 +205,12 @@ Help you to return a JSON response
184
205
  <p class="source-link">[ <a href="javascript:toggleSource('M000011_source')" id="l_M000011_source">show source</a> ]</p>
185
206
  <div id="M000011_source" class="dyn-source">
186
207
  <pre>
187
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 55</span>
188
- 55: <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>
189
- 56: <span class="ruby-identifier">warn</span>( <span class="ruby-value str">&quot;json is deprecated, please use `render( :json =&gt; ... )'&quot;</span> )
190
- 57: <span class="ruby-ivar">@response</span>[<span class="ruby-value str">'Content-Type'</span>] = <span class="ruby-value str">'application/json'</span>
191
- 58: <span class="ruby-identifier">d</span>.<span class="ruby-identifier">to_json</span>
192
- 59: <span class="ruby-keyword kw">end</span>
208
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 84</span>
209
+ 84: <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>
210
+ 85: <span class="ruby-identifier">warn</span>( <span class="ruby-value str">&quot;json is deprecated, please use `render( :json =&gt; ... )'&quot;</span> )
211
+ 86: <span class="ruby-ivar">@response</span>[<span class="ruby-value str">'Content-Type'</span>] = <span class="ruby-value str">'application/json'</span>
212
+ 87: <span class="ruby-identifier">d</span>.<span class="ruby-identifier">to_json</span>
213
+ 88: <span class="ruby-keyword kw">end</span>
193
214
  </pre>
194
215
  </div>
195
216
  </div>
@@ -217,10 +238,10 @@ Send a <a href="Helpers.html#M000012">redirect</a> response
217
238
  <p class="source-link">[ <a href="javascript:toggleSource('M000012_source')" id="l_M000012_source">show source</a> ]</p>
218
239
  <div id="M000012_source" class="dyn-source">
219
240
  <pre>
220
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 74</span>
221
- 74: <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> )
222
- 75: [<span class="ruby-value">302</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>]
223
- 76: <span class="ruby-keyword kw">end</span>
241
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 103</span>
242
+ 103: <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> )
243
+ 104: [<span class="ruby-value">302</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>]
244
+ 105: <span class="ruby-keyword kw">end</span>
224
245
  </pre>
225
246
  </div>
226
247
  </div>
@@ -230,25 +251,77 @@ Send a <a href="Helpers.html#M000012">redirect</a> response
230
251
  <p>
231
252
  Render a view
232
253
  </p>
254
+ <p>
255
+ <a href="Helpers.html#M000010">render</a>&#8216;s parameter can be a Hash
256
+ or a string. Passing a string is equivalent to do
257
+ </p>
258
+ <pre>
259
+ render( :text =&gt; string )
260
+ </pre>
261
+ <p>
262
+ If you want to use a specific renderer, use one of this options :
263
+ </p>
264
+ <ul>
265
+ <li>:markaby =&gt; :my_func : :my_func must be defined in <a
266
+ href="Views.html">Capcode::Views</a>
267
+
268
+ </li>
269
+ <li>:erb =&gt; :my_erb_file : this suppose that&#8216;s my_erb_file.rhtml exist
270
+ in erb_path
271
+
272
+ </li>
273
+ <li>:haml =&gt; :my_haml_file : this suppose that&#8216;s my_haml_file.rhtml
274
+ exist in haml_path
275
+
276
+ </li>
277
+ <li>:text =&gt; &quot;my text&quot;
278
+
279
+ </li>
280
+ <li>:<a href="Helpers.html#M000011">json</a> =&gt; MyObject : this suppose
281
+ that&#8216;s MyObject respond to .to_json
282
+
283
+ </li>
284
+ </ul>
285
+ <p>
286
+ If you want to use a specific layout, you can specify it with option
287
+ </p>
288
+ <pre>
289
+ :layout
290
+ </pre>
233
291
 
234
292
  <div class="sourcecode">
235
293
  <p class="source-link">[ <a href="javascript:toggleSource('M000010_source')" id="l_M000010_source">show source</a> ]</p>
236
294
  <div id="M000010_source" class="dyn-source">
237
295
  <pre>
238
- <span class="ruby-comment cmt"># File lib/capcode.rb, line 31</span>
239
- 31: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">render</span>( <span class="ruby-identifier">h</span> )
240
- 32: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">h</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Hash</span>
241
- 33: <span class="ruby-identifier">t</span> = (<span class="ruby-identifier">h</span>.<span class="ruby-identifier">keys</span>)[<span class="ruby-value">0</span>]
242
- 34: <span class="ruby-identifier">v</span> = <span class="ruby-identifier">h</span>[<span class="ruby-identifier">t</span>]
243
- 35: <span class="ruby-keyword kw">begin</span>
244
- 36: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>( <span class="ruby-node">&quot;render_#{t.to_s}&quot;</span>, <span class="ruby-identifier">v</span> )
245
- 37: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
246
- 38: <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 `#{t.to_s}' : #{e.message}&quot;</span>, <span class="ruby-identifier">caller</span>
247
- 39: <span class="ruby-keyword kw">end</span>
248
- 40: <span class="ruby-keyword kw">else</span>
249
- 41: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">h</span>.<span class="ruby-identifier">to_s</span>)
250
- 42: <span class="ruby-keyword kw">end</span>
251
- 43: <span class="ruby-keyword kw">end</span>
296
+ <span class="ruby-comment cmt"># File lib/capcode.rb, line 46</span>
297
+ 46: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">render</span>( <span class="ruby-identifier">h</span> )
298
+ 47: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">h</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">==</span> <span class="ruby-constant">Hash</span>
299
+ 48: <span class="ruby-identifier">render_type</span> = <span class="ruby-keyword kw">nil</span>
300
+ 49:
301
+ 50: <span class="ruby-identifier">h</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">k</span><span class="ruby-operator">|</span>
302
+ 51: <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_#{k.to_s}&quot;</span>)
303
+ 52: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">render_type</span>.<span class="ruby-identifier">nil?</span>
304
+ 53: <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 `#{k}') !&quot;</span>, <span class="ruby-identifier">caller</span>
305
+ 54: <span class="ruby-keyword kw">end</span>
306
+ 55: <span class="ruby-identifier">render_type</span> = <span class="ruby-identifier">k</span>
307
+ 56: <span class="ruby-keyword kw">end</span>
308
+ 57: <span class="ruby-keyword kw">end</span>
309
+ 58:
310
+ 59: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">render_type</span>.<span class="ruby-identifier">nil?</span>
311
+ 60: <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>
312
+ 61: <span class="ruby-keyword kw">end</span>
313
+ 62:
314
+ 63: <span class="ruby-identifier">render_name</span> = <span class="ruby-identifier">h</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">render_type</span>)
315
+ 64:
316
+ 65: <span class="ruby-keyword kw">begin</span>
317
+ 66: <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">h</span> )
318
+ 67: <span class="ruby-keyword kw">rescue</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">e</span>
319
+ 68: <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>
320
+ 69: <span class="ruby-keyword kw">end</span>
321
+ 70: <span class="ruby-keyword kw">else</span>
322
+ 71: <span class="ruby-identifier">render</span>( <span class="ruby-identifier">:text</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">h</span> )
323
+ 72: <span class="ruby-keyword kw">end</span>
324
+ 73: <span class="ruby-keyword kw">end</span>
252
325
  </pre>
253
326
  </div>
254
327
  </div>
@@ -1 +1 @@
1
- Mon, 15 Jun 2009 21:14:15 +0200
1
+ Mon, 29 Jun 2009 17:37:38 +0200
@@ -81,7 +81,7 @@ end</strong>
81
81
  <div id="README" class="page_shade">
82
82
  <div class="page">
83
83
  <div class="header">
84
- <div class="path">README / Mon Jun 15 21:12:58 +0200 2009</div>
84
+ <div class="path">README / Mon Jun 29 17:32:18 +0200 2009</div>
85
85
  </div>
86
86
 
87
87
  <h1><a href="../classes/Capcode.html">Capcode</a></h1>
@@ -98,6 +98,19 @@ Copyright (C) 2009 Gregoire Lejeune
98
98
  <a href="../classes/Capcode.html">Capcode</a> is a web microframework
99
99
  </p>
100
100
  <h2>FEATURES/PROBLEMS:</h2>
101
+ <h3>0.6.2</h3>
102
+ <ul>
103
+ <li>Add Markaby, Erb and Haml layout see Capcode::Helpers.render for more
104
+ informations
105
+
106
+ </li>
107
+ <li>Add content_for&#8230;
108
+
109
+ </li>
110
+ <li>Major bugs corrections
111
+
112
+ </li>
113
+ </ul>
101
114
  <h3>0.6.1</h3>
102
115
  <ul>
103
116
  <li>Major bugs corrections in haml and erb renderer ($%&amp;! Windows)
@@ -109,7 +122,9 @@ Copyright (C) 2009 Gregoire Lejeune
109
122
  <li>Add Markaby layout support
110
123
 
111
124
  </li>
112
- <li>Rewrite blog-couchdb example
125
+ <li>Rewrite blog-couchdb example (based on the very sympatic camping example :
126
+ <a
127
+ href="http://github.com/judofyr/camping/blob/master/examples/blog.rb">github.com/judofyr/camping/blob/master/examples/blog.rb</a>)
113
128
 
114
129
  </li>
115
130
  </ul>
@@ -81,7 +81,7 @@ end</strong>
81
81
  <div id="lib/capcode.rb" class="page_shade">
82
82
  <div class="page">
83
83
  <div class="header">
84
- <div class="path">lib/capcode.rb / Mon Jun 15 19:58:55 +0200 2009</div>
84
+ <div class="path">lib/capcode.rb / Mon Jun 29 17:30:35 +0200 2009</div>
85
85
  </div>
86
86
 
87
87
  <pre>
@@ -1,3 +1,4 @@
1
+ $:.unshift( "../lib" )
1
2
  require 'rubygems'
2
3
  require 'capcode'
3
4
  require 'capcode/base/couchdb'
@@ -33,7 +34,7 @@ module Capcode
33
34
  def get
34
35
  @story = Story.find( :all )
35
36
 
36
- render( :markaby => :home )
37
+ render( :markaby => :home, :layout => :my_layout )
37
38
  end
38
39
  end
39
40
 
@@ -46,7 +47,7 @@ module Capcode
46
47
 
47
48
  class Add < Route '/add'
48
49
  def get
49
- render( :markaby => :add )
50
+ render( :markaby => :add, :layout => :my_layout )
50
51
  end
51
52
  def post
52
53
  Story.create( :title => params['title'], :body => params['body'], :create_at => Time.now )
@@ -80,7 +81,7 @@ module Capcode::Views
80
81
  end
81
82
  end
82
83
 
83
- def layout
84
+ def my_layout
84
85
  html do
85
86
  head do
86
87
  title 'My Blog'
@@ -0,0 +1,7 @@
1
+ <% content_for( :header ) do %>
2
+ <title>title This is the title!</title>
3
+ <% end %>
4
+
5
+ <% content_for( :content ) do %>
6
+ <p>this is the content!</p>
7
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <html>
2
+ <head>
3
+ <%= yield :header %>
4
+ </head>
5
+ <body>
6
+ <%= yield :content %>
7
+ </body>
8
+ </html>
@@ -0,0 +1,8 @@
1
+ <html>
2
+ <head>
3
+ <title>Use a layout ;)</title>
4
+ </head>
5
+ <body>
6
+ <%= yield %>
7
+ </body>
8
+ </html>
@@ -1,5 +1 @@
1
- <html>
2
- <body>
3
- <p>Hello <%= @you %> it's <%= Time.now %></p>
4
- </body>
5
- </html>
1
+ <p>Hello <b><%= @you %></b> it's <%= Time.now %></p>
@@ -0,0 +1,4 @@
1
+ - content_for( :header ) do
2
+ %title This is the title!
3
+ - content_for( :content ) do
4
+ %p this is the content!
@@ -0,0 +1,5 @@
1
+ %html
2
+ %head
3
+ = yield :header
4
+ %body
5
+ = yield :content
@@ -0,0 +1,5 @@
1
+ %html
2
+ %head
3
+ %title= "Use a layout ;)"
4
+ %body
5
+ = yield
@@ -1,7 +1,5 @@
1
- %html
2
- %body
3
- %p
4
- hello
5
- %b= @you
6
- it's
7
- = Time.now
1
+ %p
2
+ hello
3
+ %b= @you
4
+ it's
5
+ = Time.now
@@ -1,4 +1,5 @@
1
1
  $:.unshift( "../lib" )
2
+ require 'rubygems'
2
3
  require 'capcode'
3
4
  require 'capcode/render/markaby'
4
5
  require 'capcode/render/haml'
@@ -29,8 +30,7 @@ module Capcode
29
30
 
30
31
  session = { :user => @you }
31
32
 
32
- # "Hello " + bold { you } + " it's '#{Time.now} !"
33
- render( :markaby => :m_hello )
33
+ render( :haml => :m_hello )
34
34
  end
35
35
  end
36
36
 
@@ -42,7 +42,7 @@ module Capcode
42
42
 
43
43
  class Glop < Route '/glop/(.*)', '/glop/code/([^\/]*)/(.*)'
44
44
  def get( r, v )
45
- "Glop receive #{r}, type #{r.class} and #{v}, type #{v.class} from #{URL(Glop)}"
45
+ render( :text => "Glop receive #{r}, type #{r.class} and #{v}, type #{v.class} from #{URL(Glop)}" )
46
46
  end
47
47
  end
48
48
 
@@ -57,12 +57,39 @@ module Capcode
57
57
  x = env.map do |k,v|
58
58
  "#{k} => #{v}"
59
59
  end.join( "<br />\n" )
60
- x
60
+ render( :text => x )
61
+ end
62
+ end
63
+
64
+ class ContentFor < Route '/cf'
65
+ def get
66
+ render( :erb => :cf, :layout => :cf_layout )
61
67
  end
62
68
  end
63
69
  end
64
70
 
65
71
  module Capcode::Views
72
+ def cf_layout
73
+ html do
74
+ head do
75
+ yield :header
76
+ end
77
+ body do
78
+ yield :content
79
+ end
80
+ end
81
+ end
82
+
83
+ def cf
84
+ content_for :header do
85
+ title "This is the title!"
86
+ end
87
+
88
+ content_for :content do
89
+ p "this is the content!"
90
+ end
91
+ end
92
+
66
93
  def layout
67
94
  html do
68
95
  head do
@@ -75,16 +102,12 @@ module Capcode::Views
75
102
  end
76
103
 
77
104
  def m_hello
78
- p do
79
- text "Hello "
80
- b @you
81
- text " it's '#{Time.now} !"
82
- end
105
+ p do
106
+ text "Hello "
107
+ b @you
108
+ text " it's '#{Time.now} !"
109
+ end
83
110
  end
84
111
  end
85
112
 
86
- #Capcode.map( "/file" ) do
87
- # Rack::File.new( "." )
88
- #end
89
-
90
113
  Capcode.run( :port => 3001, :host => "localhost", :root => "." )
@@ -23,26 +23,55 @@ module Capcode
23
23
  # Helpers contains methods available in your controllers
24
24
  module Helpers
25
25
  @@__ROOT_DIRECTORY = ""
26
+ @@__ARGS__ = nil
26
27
  def self.root=(p)
27
28
  @@__ROOT_DIRECTORY=p
28
29
  end
29
30
 
30
31
  # Render a view
32
+ #
33
+ # render's parameter can be a Hash or a string. Passing a string is equivalent to do
34
+ # render( :text => string )
35
+ #
36
+ # If you want to use a specific renderer, use one of this options :
37
+ #
38
+ # * :markaby => :my_func : :my_func must be defined in Capcode::Views
39
+ # * :erb => :my_erb_file : this suppose that's my_erb_file.rhtml exist in erb_path
40
+ # * :haml => :my_haml_file : this suppose that's my_haml_file.rhtml exist in haml_path
41
+ # * :text => "my text"
42
+ # * :json => MyObject : this suppose that's MyObject respond to .to_json
43
+ #
44
+ # If you want to use a specific layout, you can specify it with option
45
+ # :layout
31
46
  def render( h )
32
47
  if h.class == Hash
33
- t = (h.keys)[0]
34
- v = h[t]
48
+ render_type = nil
49
+
50
+ h.keys.each do |k|
51
+ if self.respond_to?("render_#{k.to_s}")
52
+ unless render_type.nil?
53
+ raise Capcode::RenderError, "Can't use multiple renderer (`#{render_type}' and `#{k}') !", caller
54
+ end
55
+ render_type = k
56
+ end
57
+ end
58
+
59
+ if render_type.nil?
60
+ raise Capcode::RenderError, "Renderer type not specified!", caller
61
+ end
62
+
63
+ render_name = h.delete(render_type)
64
+
35
65
  begin
36
- self.send( "render_#{t.to_s}", v )
66
+ self.send( "render_#{render_type.to_s}", render_name, h )
37
67
  rescue => e
38
- raise Capcode::RenderError, "Error rendering `#{t.to_s}' : #{e.message}", caller
68
+ raise Capcode::RenderError, "Error rendering `#{render_type.to_s}' : #{e.message}", caller
39
69
  end
40
70
  else
41
- return self.send(h.to_s)
71
+ render( :text => h )
42
72
  end
43
73
  end
44
74
 
45
-
46
75
  # Help you to return a JSON response
47
76
  #
48
77
  # module Capcode
@@ -102,6 +131,13 @@ module Capcode
102
131
 
103
132
  path+((a.size>0)?("/"+a.join("/")):(""))
104
133
  end
134
+
135
+ # Calling content_for stores a block of markup in an identifier.
136
+ def content_for( x )
137
+ if @@__ARGS__.map{|_| _.to_s }.include?(x.to_s)
138
+ yield
139
+ end
140
+ end
105
141
  end
106
142
 
107
143
  include Rack
@@ -165,7 +201,7 @@ module Capcode
165
201
 
166
202
  [200, {
167
203
  "Last-Modified" => File.mtime(@path).httpdate,
168
- "Content-Type" => (MIME::Types.type_for(@path)[0] || '/text/plain').to_s,
204
+ "Content-Type" => (MIME::Types.type_for(@path)[0] || 'text/plain').to_s,
169
205
  "Content-Length" => size.to_s
170
206
  }, body]
171
207
  end
@@ -182,6 +218,8 @@ module Capcode
182
218
  end
183
219
 
184
220
  class << self
221
+ attr :__args__, true
222
+
185
223
  # Add routes to a controller class
186
224
  #
187
225
  # module Capcode