public
Description: The invisible framework
Homepage: http://macournoyer.com/
Clone URL: git://github.com/macournoyer/invisible.git
Add helpers
macournoyer (author)
Mon Jul 21 10:29:34 -0700 2008
commit  07324a5a76126bb0b03607e3a32e6531548772d8
tree    374bc41da6f285fa0454a2dc402d618203a7e3c5
parent  70a3feb461782bda296b737509e1fc806806657b
...
1
2
3
 
 
 
 
 
 
4
5
6
...
20
21
22
23
 
24
25
26
...
1
2
3
4
5
6
7
8
9
10
11
12
...
26
27
28
 
29
30
31
32
0
@@ -1,6 +1,12 @@
0
 $:.unshift File.dirname(__FILE__) + "/../lib"
0
 require "invisible"
0
 
0
+helpers do
0
+ def time
0
+ Time.now.to_s
0
+ end
0
+end
0
+
0
 layout do
0
   html do
0
     body do
0
@@ -20,7 +26,7 @@ end
0
 
0
 get "/" do
0
   render do
0
- h2 "Welcome"
0
+ h2 "Welcome, it's #{@helpers.time}"
0
     p params["oh"]
0
     p session["stuff"]
0
   end
...
9
10
11
 
12
13
14
...
23
24
25
26
27
 
 
28
29
30
...
32
33
34
 
 
 
 
 
35
36
37
...
9
10
11
12
13
14
15
...
24
25
26
 
 
27
28
29
30
31
...
33
34
35
36
37
38
39
40
41
42
43
0
@@ -9,6 +9,7 @@ class Invisible
0
   def initialize(&block)
0
     @actions = []
0
     @layouts = {}
0
+ @helpers = Module.new
0
     @app = self
0
     instance_eval(&block) if block
0
   end
0
@@ -23,8 +24,8 @@ class Invisible
0
     options = args.last.is_a?(Hash) ? args.pop : {}
0
     layout = @layouts[options.delete(:layout) || :default]
0
     assigns = { :request => request, :params => params, :session => session }
0
- content = block ? Markaby::Builder.new(assigns, nil, &block).to_s : args.last
0
- content = Markaby::Builder.new(assigns.merge(:content => content), nil, &layout).to_s if layout
0
+ content = block ? Markaby::Builder.new(assigns, @helpers, &block).to_s : args.last
0
+ content = Markaby::Builder.new(assigns.merge(:content => content), @helpers, &layout).to_s if layout
0
     [status, options, content]
0
   end
0
   
0
@@ -32,6 +33,11 @@ class Invisible
0
     @layouts[name] = block
0
   end
0
   
0
+ def helpers(&block)
0
+ @helpers.instance_eval(&block)
0
+ instance_eval(&block)
0
+ end
0
+
0
   def call(env)
0
     @request = Rack::Request.new(env)
0
     @params = @request.params

Comments

    No one has commented yet.