nested 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 166d069fbce22175e7ed0212140ae0c269484e68
4
- data.tar.gz: 64e7a84b68750c89bc54ecc827c4ef35d2c48ede
3
+ metadata.gz: 27598f96705c4a9b647048ef032121d310fd3646
4
+ data.tar.gz: cd15467a29499cb6bd1c648a00f0c6455c567372
5
5
  SHA512:
6
- metadata.gz: 4f7c3dd136ccbfc5a716d68033a87db8a141939779f58b732661e541aaae3a69b29b9952002d4c8106eb0966da4e4e0f9517dfccbd0415262f022cf2875b9a07
7
- data.tar.gz: 3ba0d93d82c54adfb4c56b4e09a873c211a95705cacb8bdcf7c396f3625931178255ff2c7800c4081fadf226c859def7b84077d98599f6381544174409b9f5e3
6
+ metadata.gz: 30ec9775adca2477d587ddead84a29416d7c71f7782a1a5ae66953f4be1ebb58ecab7d5762f34c150b69c7cd598f0fa3257b099bcae821d17a623d79d2bcf46b
7
+ data.tar.gz: e751dbad8babce5e2fc565293eb6b9351d36d9a7a9745b9c81a3e7a861f2b2c6c2935de72c05822263ea16df5eba85a25f85be643fdbe539f1fc470239715263
data/Gemfile CHANGED
@@ -3,5 +3,6 @@ ruby "2.0.0"
3
3
  source 'https://rubygems.org'
4
4
 
5
5
  gem "activesupport"
6
+ gem "activerecord"
6
7
  gem "mocha"
7
8
  gem "json"
data/Gemfile.lock CHANGED
@@ -1,14 +1,26 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- activesupport (4.0.0)
4
+ activemodel (4.0.1)
5
+ activesupport (= 4.0.1)
6
+ builder (~> 3.1.0)
7
+ activerecord (4.0.1)
8
+ activemodel (= 4.0.1)
9
+ activerecord-deprecated_finders (~> 1.0.2)
10
+ activesupport (= 4.0.1)
11
+ arel (~> 4.0.0)
12
+ activerecord-deprecated_finders (1.0.3)
13
+ activesupport (4.0.1)
5
14
  i18n (~> 0.6, >= 0.6.4)
6
15
  minitest (~> 4.2)
7
16
  multi_json (~> 1.3)
8
17
  thread_safe (~> 0.1)
9
18
  tzinfo (~> 0.3.37)
19
+ arel (4.0.1)
10
20
  atomic (1.1.14)
21
+ builder (3.1.4)
11
22
  i18n (0.6.5)
23
+ json (1.8.1)
12
24
  metaclass (0.0.1)
13
25
  minitest (4.7.5)
14
26
  mocha (0.14.0)
@@ -22,5 +34,7 @@ PLATFORMS
22
34
  ruby
23
35
 
24
36
  DEPENDENCIES
37
+ activerecord
25
38
  activesupport
39
+ json
26
40
  mocha
data/lib/nested.rb CHANGED
@@ -15,18 +15,18 @@ module Nested
15
15
  end
16
16
 
17
17
  class Resource
18
- FETCH = ->(resource, ctrl) do
19
- raise "implement fetch for resource #{resource.name}" unless resource.parent
20
- raise "implement fetch for singleton #{resource.name}" if resource.singleton?
18
+ FETCH = -> do
19
+ raise "implement fetch for resource #{@__resource.name}" unless @__resource.parent
20
+ raise "implement fetch for singleton #{@__resource.name}" if @__resource.singleton?
21
21
 
22
- parent_resource = resource.parent
23
- parent_obj = ctrl.instance_variable_get("@#{parent_resource.instance_variable_name}")
22
+ parent_resource = @__resource.parent
23
+ parent_obj = instance_variable_get("@#{parent_resource.instance_variable_name}")
24
24
 
25
- if resource.name
26
- scope = parent_obj.send(resource.name.to_s.pluralize.to_sym)
27
- resource.collection? ? scope : scope.where(id: ctrl.params["#{resource.name.to_s.singularize}_id"]).first
25
+ if @__resource.name
26
+ scope = parent_obj.send(@__resource.name.to_s.pluralize.to_sym)
27
+ @__resource.collection? ? scope : scope.where(id: params["#{@__resource.name.to_s.singularize}_id"]).first
28
28
  else
29
- parent_obj.where(id: ctrl.params["#{parent_resource.name.to_s.singularize}_id"]).first
29
+ parent_obj.where(id: params["#{parent_resource.name.to_s.singularize}_id"]).first
30
30
  end
31
31
  end
32
32
 
@@ -44,14 +44,14 @@ module Nested
44
44
  @resources = []
45
45
  @actions = []
46
46
 
47
- init &->(resource) do
48
- fetched = FETCH.call(resource, self)
47
+ init &-> do
48
+ fetched = instance_exec(&FETCH)
49
49
 
50
- puts "set @#{resource.instance_variable_name} to #{fetched.inspect} for #{self}"
51
- self.instance_variable_set("@#{resource.instance_variable_name}", fetched)
50
+ puts "set @#{@__resource.instance_variable_name} to #{fetched.inspect} for #{self}"
51
+ self.instance_variable_set("@#{@__resource.instance_variable_name}", fetched)
52
52
  end
53
53
 
54
- serialize &->(obj, resource) do
54
+ serialize &->(obj) do
55
55
  obj
56
56
  end
57
57
  end
@@ -71,8 +71,8 @@ module Nested
71
71
  def serialize(*args, &block)
72
72
  raise "pass either *args or &block" if args.empty? && !block
73
73
 
74
- @__serialize = ->(obj, resource) do
75
- obj = self.instance_exec(obj, resource, &block) if block
74
+ @__serialize = ->(obj) do
75
+ obj = self.instance_exec(obj, &block) if block
76
76
  obj = obj.attributes if obj.is_a?(ActiveRecord::Base)
77
77
  obj = obj.symbolize_keys.slice(*args) unless args.empty?
78
78
  obj
@@ -166,30 +166,32 @@ module Nested
166
166
  # --------------------------
167
167
 
168
168
  def sinatra_init(sinatra)
169
- sinatra.instance_exec(self, &@__init)
169
+ sinatra.instance_variable_set("@__resource", self)
170
+ sinatra.instance_exec(&@__init)
170
171
  end
171
172
 
172
173
  def sinatra_exec_get_block(sinatra, &block)
173
- sinatra.instance_exec(self, &block)
174
+ sinatra.instance_exec(&block)
174
175
  end
175
176
 
176
177
  def sinatra_exec_delete_block(sinatra, &block)
177
- sinatra.instance_exec(self, &block)
178
+ sinatra.instance_exec(&block)
178
179
  end
179
180
 
180
- def sinatra_read_json_body(sinatra)
181
+ def sinatra_init_data(sinatra, &block)
181
182
  sinatra.request.body.rewind
182
- HashWithIndifferentAccess.new JSON.parse(sinatra.request.body.read)
183
+ @__raw_data = HashWithIndifferentAccess.new(JSON.parse(sinatra.request.body.read))
184
+ @__data = @__raw_data.values_at(*block.parameters.map(&:last))
183
185
  end
184
186
 
185
187
  def sinatra_exec_put_block(sinatra, &block)
186
- data = sinatra_read_json_body(sinatra)
187
- sinatra.instance_exec(data, self, &block)
188
+ sinatra_init_data(sinatra, &block)
189
+ sinatra.instance_exec(*@__data, &block)
188
190
  end
189
191
 
190
192
  def sinatra_exec_post_block(sinatra, &block)
191
- data = sinatra_read_json_body(sinatra)
192
- res = sinatra.instance_exec(data, self, &block)
193
+ sinatra_init_data(sinatra, &block)
194
+ res = sinatra.instance_exec(*@__data, &block)
193
195
  sinatra.instance_variable_set("@#{self.instance_variable_name}", res)
194
196
  end
195
197
 
@@ -209,9 +211,9 @@ module Nested
209
211
 
210
212
  def sinatra_response_create_data(sinatra, response)
211
213
  data = if response && collection?
212
- response.to_a.map{|e| sinatra.instance_exec(e, self, &@__serialize) }
214
+ response.to_a.map{|e| sinatra.instance_exec(e, &@__serialize) }
213
215
  else
214
- sinatra.instance_exec(response, self, &@__serialize)
216
+ sinatra.instance_exec(response, &@__serialize)
215
217
  end
216
218
 
217
219
  {data: data, ok: true}
data/nested.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "nested"
3
- s.version = "0.0.8"
3
+ s.version = "0.0.9"
4
4
 
5
5
  s.authors = ["Jan Zimmek"]
6
6
  s.email = %q{jan.zimmek@web.de}
@@ -15,6 +15,7 @@ Gem::Specification.new do |s|
15
15
  s.require_paths = ["lib"]
16
16
 
17
17
  s.add_runtime_dependency "activesupport"
18
+ s.add_runtime_dependency "activerecord"
18
19
  s.add_runtime_dependency "sinatra"
19
20
  s.add_runtime_dependency "json"
20
21
  end
data/test/nested_test.rb CHANGED
@@ -74,7 +74,7 @@ class NestedTest < Test::Unit::TestCase
74
74
 
75
75
  @r.serialize :name
76
76
 
77
- assert_equal({name: :joe}, @r.instance_variable_get("@__serialize").call({name: :joe, test: true}, {}))
77
+ assert_equal({name: :joe}, @r.instance_variable_get("@__serialize").call({name: :joe, test: true}))
78
78
  end
79
79
 
80
80
  def test_route
@@ -314,10 +314,10 @@ class NestedTest < Test::Unit::TestCase
314
314
  singleton!
315
315
  # assert_equal(@r.serializer, Nested::Resource::SERIALIZE)
316
316
 
317
- ser = ->(obj, resource) { [obj, resource] }
317
+ ser = ->(obj) { obj }
318
318
  @r.serialize &ser
319
319
 
320
- assert_equal [1, @r], @r.instance_variable_get("@__serialize").call(1, @r)
320
+ assert_equal 1, @r.instance_variable_get("@__serialize").call(1)
321
321
  end
322
322
 
323
323
  # ----
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nested
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Zimmek
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: sinatra
29
43
  requirement: !ruby/object:Gem::Requirement