Capcode 0.6.1 → 0.6.2

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.
@@ -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