bebop 0.1.1 → 0.1.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.
- data/bebop.gemspec +1 -1
- data/lib/bebop.rb +2 -0
- data/lib/bebop/ext.rb +28 -10
- data/spec/bebop_spec.rb +8 -1
- metadata +1 -1
data/bebop.gemspec
CHANGED
data/lib/bebop.rb
CHANGED
data/lib/bebop/ext.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
require 'active_support'
|
2
|
-
|
3
1
|
module Bebop
|
4
2
|
class InvalidPathArgumentError < ArgumentError; end
|
5
3
|
PARAM_REGEX = /:[a-zA-Z0-9_]+/
|
4
|
+
|
6
5
|
|
7
6
|
def resource(name, &block)
|
8
7
|
resource = ResourceRouter.new
|
@@ -28,10 +27,30 @@ module Bebop
|
|
28
27
|
end
|
29
28
|
end
|
30
29
|
|
30
|
+
class Action
|
31
|
+
attr_accessor :route, :options, :block
|
32
|
+
def initialize(route, options, block)
|
33
|
+
@route, @options, @block = route, options, block
|
34
|
+
end
|
35
|
+
|
36
|
+
def method
|
37
|
+
self.class.to_s.downcase.to_sym
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class Get < Action; end
|
31
42
|
|
32
43
|
class ResourceRouter
|
33
44
|
attr_accessor :routes
|
34
|
-
|
45
|
+
|
46
|
+
def logger
|
47
|
+
@@logger ||= Logger.new(STDOUT)
|
48
|
+
end
|
49
|
+
|
50
|
+
def logger=(val)
|
51
|
+
@@logger = val
|
52
|
+
end
|
53
|
+
|
35
54
|
def initialize(parent_resources=[], before_all=[], after_all=[])
|
36
55
|
@current_resource = parent_resources.pop
|
37
56
|
@parent_resources = parent_resources
|
@@ -51,7 +70,7 @@ module Bebop
|
|
51
70
|
end
|
52
71
|
|
53
72
|
def delete(route, options={}, &block)
|
54
|
-
add_route(:delete, route, options,
|
73
|
+
add_route(:delete, route, options, block)
|
55
74
|
end
|
56
75
|
|
57
76
|
def head(route, options={}, &block)
|
@@ -106,11 +125,10 @@ module Bebop
|
|
106
125
|
def print
|
107
126
|
#TODO 6! 6! Block parameters, Ah Ah Ah! -> probably need route objects
|
108
127
|
@routes.each do |method, route, options, block, helper, identifier|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
puts
|
128
|
+
logger.info "#{route}"
|
129
|
+
logger.info " method: #{method.to_s.upcase}"
|
130
|
+
logger.info " helper: #{helper}" if helper
|
131
|
+
logger.info " identifier: #{identifier} " if identifier
|
114
132
|
end
|
115
133
|
end
|
116
134
|
|
@@ -131,7 +149,7 @@ module Bebop
|
|
131
149
|
end
|
132
150
|
|
133
151
|
def add_route(method, route, options, block)
|
134
|
-
identifier =options[:identifier]
|
152
|
+
identifier = options[:identifier]
|
135
153
|
route = append_to_path(route)
|
136
154
|
block = add_filters_to_block(block, identifier, method)
|
137
155
|
helper = route_helper(identifier)
|
data/spec/bebop_spec.rb
CHANGED
@@ -147,7 +147,10 @@ describe Bebop do
|
|
147
147
|
last_response.body.should == 'success'
|
148
148
|
end
|
149
149
|
|
150
|
-
it "should produce correct routes for more than 2 levels of nesting"
|
150
|
+
it "should produce correct routes for more than 2 levels of nesting" do
|
151
|
+
get '/foos/1/bars/2/bazs'
|
152
|
+
last_response.body.should match(/#{BEFORE_ALL_2}/)
|
153
|
+
end
|
151
154
|
|
152
155
|
BEFORE_BARS = '__before_bars__'
|
153
156
|
BEFORE_UPDATE = '__before_update__'
|
@@ -193,6 +196,10 @@ describe Bebop do
|
|
193
196
|
bar.destroy { "#{@all2}#{@all}#{@update}#{@bars}" }
|
194
197
|
|
195
198
|
bar.show { "show #{params[:foo_id]} #{params[:bar_id]}" }
|
199
|
+
|
200
|
+
bar.resource :bazs do |baz|
|
201
|
+
baz.index { @all2 }
|
202
|
+
end
|
196
203
|
end
|
197
204
|
|
198
205
|
foo.get('/do/something') { 'success' }
|