public
Description: The invisible framework
Homepage: http://macournoyer.com/
Clone URL: git://github.com/macournoyer/invisible.git
Refactor status code usage and rendering logic.
macournoyer (author)
Mon Jul 21 13:29:32 -0700 2008
commit  c1d12459e9c3490ec3acaa495ca79574da5be9d3
tree    5846e25919f83138add75d31667bf3c5adca405b
parent  e3c0077864dd692f6a57146a80a6a371934e1dc3
...
64
65
66
67
68
 
69
70
71
72
73
74
75
 
76
77
78
...
64
65
66
 
67
68
69
70
 
 
 
 
 
71
72
73
74
0
@@ -64,15 +64,11 @@ class Invisible
0
   # render "some text"
0
   #
0
   def render(*args, &block)
0
- status = args.first.is_a?(Fixnum) ? args.shift : 200
0
     options = args.last.is_a?(Hash) ? args.pop : {}
0
+ status = options.delete(:status) || 200
0
     layout = @layouts[options.delete(:layout) || :default]
0
     assigns = { :request => request, :params => params, :session => session }
0
- content = case args.last
0
- when String then args.last
0
- when Symbol then Markaby::Builder.new(assigns, @helpers, &@views[args.last]).to_s
0
- when NilClass then Markaby::Builder.new(assigns, @helpers, &block).to_s
0
- end
0
+ content = args.last.is_a?(String) ? args.last : Markaby::Builder.new(assigns, @helpers, &(block || @views[args.last])).to_s
0
     content = Markaby::Builder.new(assigns.merge(:content => content), @helpers, &layout).to_s if layout
0
     [status, options, content]
0
   end
...
18
19
20
 
 
 
 
 
 
 
 
 
21
22
23
...
32
33
34
 
 
 
 
 
 
 
 
 
 
 
 
35
...
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
...
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
0
@@ -18,6 +18,15 @@ describe "render" do
0
           text request.class.name
0
         end
0
       end
0
+
0
+ get "/status" do
0
+ render "", :status => 201
0
+ end
0
+
0
+ get "/anywhere" do
0
+ render "anywhere"
0
+ "ohnoz!"
0
+ end
0
     end
0
   end
0
   
0
@@ -32,4 +41,16 @@ describe "render" do
0
   it "should assign request inside markaby builder" do
0
     @app.mock.get("/request").body.should == "Rack::Request"
0
   end
0
+
0
+ it "should use specified status" do
0
+ @app.mock.get("/status").status.should == 201
0
+ end
0
+
0
+ it "should use default status to 200" do
0
+ @app.mock.get("/text").status.should == 200
0
+ end
0
+
0
+ xit "should allow render anywhere" do
0
+ @app.mock.get("/anywhere").body.should == "anywhere"
0
+ end
0
 end

Comments

    No one has commented yet.