nested 0.0.8 → 0.0.9

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 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