nested 0.0.13 → 0.0.14
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.
- checksums.yaml +4 -4
- data/lib/nested.rb +26 -11
- data/nested.gemspec +1 -1
- data/test/nested_test.rb +7 -6
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7063cd0594194d6e5f4036d64efe0bc45f6ed93c
|
4
|
+
data.tar.gz: 4c9f893b97e071121ac3b48e8e75e650f72b75ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5cb48d77b00da7a4289cb9ea3d0ac6da5a78f035cb801d370e2830044bd540e8ecc7eff38f0c9946c299ef258156e0b54570b6d8559c3378c8ecb275864135b
|
7
|
+
data.tar.gz: 84d5537846238eb86517ad44145134a423112b572659689f6eaf28341bce9530e936b34806d1acbbede9ece32b6c4310c711e4e266f26610a1912ba69ad31073
|
data/lib/nested.rb
CHANGED
@@ -179,28 +179,36 @@ module Nested
|
|
179
179
|
end
|
180
180
|
|
181
181
|
def sinatra_exec_get_block(sinatra, &block)
|
182
|
-
sinatra
|
182
|
+
sinatra_init_data(:get, sinatra, &block)
|
183
|
+
sinatra.instance_exec(*sinatra.instance_variable_get("@__data"), &block)
|
183
184
|
end
|
184
185
|
|
185
186
|
def sinatra_exec_delete_block(sinatra, &block)
|
186
|
-
sinatra
|
187
|
+
sinatra_init_data(:delete, sinatra, &block)
|
188
|
+
sinatra.instance_exec(*sinatra.instance_variable_get("@__data"), &block)
|
187
189
|
end
|
188
190
|
|
189
|
-
def sinatra_init_data(sinatra, &block)
|
190
|
-
|
191
|
-
|
191
|
+
def sinatra_init_data(method, sinatra, &block)
|
192
|
+
raw_data = if [:put, :post].include?(method)
|
193
|
+
sinatra.request.body.rewind
|
194
|
+
HashWithIndifferentAccess.new(JSON.parse(sinatra.request.body.read))
|
195
|
+
elsif [:get, :delete].include?(method)
|
196
|
+
sinatra.params
|
197
|
+
else
|
198
|
+
{}
|
199
|
+
end
|
192
200
|
|
193
201
|
sinatra.instance_variable_set("@__raw_data", raw_data)
|
194
202
|
sinatra.instance_variable_set("@__data", raw_data.values_at(*block.parameters.map(&:last)))
|
195
203
|
end
|
196
204
|
|
197
205
|
def sinatra_exec_put_block(sinatra, &block)
|
198
|
-
sinatra_init_data(sinatra, &block)
|
206
|
+
sinatra_init_data(:put, sinatra, &block)
|
199
207
|
sinatra.instance_exec(*sinatra.instance_variable_get("@__data"), &block)
|
200
208
|
end
|
201
209
|
|
202
210
|
def sinatra_exec_post_block(sinatra, &block)
|
203
|
-
sinatra_init_data(sinatra, &block)
|
211
|
+
sinatra_init_data(:post, sinatra, &block)
|
204
212
|
res = sinatra.instance_exec(*sinatra.instance_variable_get("@__data"), &block)
|
205
213
|
sinatra.instance_variable_set("@#{self.instance_variable_name}", res)
|
206
214
|
end
|
@@ -241,7 +249,7 @@ module Nested
|
|
241
249
|
end
|
242
250
|
|
243
251
|
def create_sinatra_route(method, action, &block)
|
244
|
-
@actions << {method: method, action: action}
|
252
|
+
@actions << {method: method, action: action, block: block}
|
245
253
|
|
246
254
|
resource = self
|
247
255
|
|
@@ -285,7 +293,8 @@ module Nested
|
|
285
293
|
|
286
294
|
def angular_add_functions(js, resource)
|
287
295
|
resource.actions.each do |e|
|
288
|
-
method, action = e.values_at :method, :action
|
296
|
+
method, action, block = e.values_at :method, :action, :block
|
297
|
+
block_args = block.parameters.map(&:last)
|
289
298
|
|
290
299
|
fun_name = Nested::JsUtil::generate_function_name(resource, method, action)
|
291
300
|
|
@@ -300,10 +309,16 @@ module Nested
|
|
300
309
|
when_args = args.map{|a| "$q.when(#{a})"}
|
301
310
|
|
302
311
|
if [:get, :delete].include?(method)
|
312
|
+
args << "data" if !block_args.empty?
|
313
|
+
|
303
314
|
js << " impl.#{fun_name} = function(#{args.join(',')}){"
|
304
315
|
js << " var deferred = $q.defer()"
|
305
316
|
js << " $q.all([#{when_args.join(',')}]).then(function(values){"
|
306
|
-
js << " $http({
|
317
|
+
js << " $http({"
|
318
|
+
js << " method: '#{method}', "
|
319
|
+
js << (" url: '#{route}'" + (block_args.empty? ? "" : ","))
|
320
|
+
js << " params: data" unless block_args.empty?
|
321
|
+
js << " })"
|
307
322
|
js << " .success(function(responseData){"
|
308
323
|
js << " deferred[responseData.ok ? 'resolve' : 'reject'](responseData.data)"
|
309
324
|
js << " })"
|
@@ -324,7 +339,7 @@ module Nested
|
|
324
339
|
js << " return deferred.promise"
|
325
340
|
js << " }"
|
326
341
|
elsif method == :put
|
327
|
-
args << "data" if args.empty?
|
342
|
+
args << "data" if args.empty? || !block_args.empty?
|
328
343
|
|
329
344
|
js << " impl.#{fun_name} = function(#{args.join(',')}){"
|
330
345
|
js << " var deferred = $q.defer()"
|
data/nested.gemspec
CHANGED
data/test/nested_test.rb
CHANGED
@@ -294,20 +294,21 @@ class NestedTest < Test::Unit::TestCase
|
|
294
294
|
singleton!
|
295
295
|
|
296
296
|
@sinatra.expects(:send).with(:get, "/project")
|
297
|
-
|
298
|
-
|
297
|
+
block = ->{ }
|
298
|
+
@r.create_sinatra_route(:get, nil, &block)
|
299
|
+
assert_equal [{method: :get, action: nil, block: block}], @r.actions
|
299
300
|
|
300
301
|
singleton!
|
301
302
|
|
302
303
|
@sinatra.expects(:send).with(:post, "/project")
|
303
|
-
@r.create_sinatra_route(:post, nil)
|
304
|
-
assert_equal [{method: :post, action: nil}], @r.actions
|
304
|
+
@r.create_sinatra_route(:post, nil, &block)
|
305
|
+
assert_equal [{method: :post, action: nil, block: block}], @r.actions
|
305
306
|
|
306
307
|
singleton!
|
307
308
|
|
308
309
|
@sinatra.expects(:send).with(:post, "/project/action")
|
309
|
-
@r.create_sinatra_route(:post, :action)
|
310
|
-
assert_equal [{method: :post, action: :action}], @r.actions
|
310
|
+
@r.create_sinatra_route(:post, :action, &block)
|
311
|
+
assert_equal [{method: :post, action: :action, block: block}], @r.actions
|
311
312
|
end
|
312
313
|
|
313
314
|
def test_serializer
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nested
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jan Zimmek
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|