nested 0.0.5 → 0.0.6
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 +39 -16
- data/nested.gemspec +1 -1
- data/test/nested_test.rb +7 -40
- 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: 49bb517e6971a0a86442877831128da5bba7655d
|
4
|
+
data.tar.gz: 02518d037ff5a282f2617d78aed2c6cdf93b7624
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9aa03054fc3fcb2dd7cfbe8ac8f91442b37dde54976e865ca43ddc05681117a70cf9b24fd0eb254b9ffd652267c8f180619a839173cb1315df4c4a5dbd58637
|
7
|
+
data.tar.gz: 41ce15bbd4beb3000ce43bb56172f20843a9509872d0b1b0b9b8c65b23b3938228c4f1a91de01a5b094aa8a60e296eed39e3cf3450b8f90ba94be059fba05626
|
data/lib/nested.rb
CHANGED
@@ -15,7 +15,7 @@ module Nested
|
|
15
15
|
end
|
16
16
|
|
17
17
|
class Resource
|
18
|
-
SERIALIZE = ->(obj,
|
18
|
+
SERIALIZE = ->(obj, sinatra, resource) do
|
19
19
|
obj
|
20
20
|
end
|
21
21
|
|
@@ -47,6 +47,13 @@ module Nested
|
|
47
47
|
@parent = parent
|
48
48
|
@resources = []
|
49
49
|
@actions = []
|
50
|
+
|
51
|
+
@__init = ->(resource) do
|
52
|
+
fetched = FETCH.call(resource, self)
|
53
|
+
|
54
|
+
puts "set @#{resource.instance_variable_name} to #{fetched.inspect} for #{self}"
|
55
|
+
self.instance_variable_set("@#{resource.instance_variable_name}", fetched)
|
56
|
+
end
|
50
57
|
end
|
51
58
|
|
52
59
|
def singleton?
|
@@ -61,10 +68,36 @@ module Nested
|
|
61
68
|
@collection == true
|
62
69
|
end
|
63
70
|
|
64
|
-
def
|
65
|
-
|
66
|
-
|
67
|
-
|
71
|
+
def serialize(*args, &block)
|
72
|
+
raise "pass either *args or &block" if args.empty? && !block
|
73
|
+
|
74
|
+
@__serialize = ->(obj, sinatra, resource) do
|
75
|
+
obj = block.call(obj) if block
|
76
|
+
obj = obj.attributes if obj.is_a?(ActiveRecord::Base)
|
77
|
+
obj = obj.symbolize_keys.slice(*args) unless args.empty?
|
78
|
+
obj
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
# if block && !args.empty?
|
84
|
+
# @__serialize = ->(obj, sinatra, resource) do
|
85
|
+
# block.call(obj).attributes.symbolize_keys.slice(*args)
|
86
|
+
# end
|
87
|
+
# elsif block && args.empty?
|
88
|
+
# @__serialize = block
|
89
|
+
# elsif !block && !args.empty?
|
90
|
+
# @__serialize = ->(obj, sinatra, resource) do
|
91
|
+
# obj.attributes.symbolize_keys.slice(*args)
|
92
|
+
# end
|
93
|
+
# else
|
94
|
+
# raise "pass either *args or &block"
|
95
|
+
# end
|
96
|
+
end
|
97
|
+
|
98
|
+
def init(&block)
|
99
|
+
@__init = block
|
100
|
+
end
|
68
101
|
|
69
102
|
def route(args={}, action=nil)
|
70
103
|
"".tap do |r|
|
@@ -146,10 +179,6 @@ module Nested
|
|
146
179
|
(self.parents + [self]).reverse
|
147
180
|
end
|
148
181
|
|
149
|
-
def fetcher
|
150
|
-
@__fetch || FETCH
|
151
|
-
end
|
152
|
-
|
153
182
|
def serializer
|
154
183
|
@__serialize || SERIALIZE
|
155
184
|
end
|
@@ -157,13 +186,7 @@ module Nested
|
|
157
186
|
# --------------------------
|
158
187
|
|
159
188
|
def sinatra_init(sinatra)
|
160
|
-
|
161
|
-
resource_obj = fetcher.call(self, sinatra)
|
162
|
-
|
163
|
-
puts "set @#{self.instance_variable_name} to #{resource_obj.inspect} for #{sinatra}"
|
164
|
-
sinatra.instance_variable_set("@#{self.instance_variable_name}", resource_obj)
|
165
|
-
|
166
|
-
@__after_fetch.call(self, sinatra) if @__after_fetch
|
189
|
+
sinatra.instance_exec(self, &@__init)
|
167
190
|
end
|
168
191
|
|
169
192
|
def sinatra_exec_get_block(sinatra, &block)
|
data/nested.gemspec
CHANGED
data/test/nested_test.rb
CHANGED
@@ -2,6 +2,7 @@ require "test/unit"
|
|
2
2
|
require "mocha/setup"
|
3
3
|
require "active_support/all"
|
4
4
|
require "active_model/errors"
|
5
|
+
require "active_record"
|
5
6
|
require "nested"
|
6
7
|
|
7
8
|
class NestedTest < Test::Unit::TestCase
|
@@ -59,50 +60,23 @@ class NestedTest < Test::Unit::TestCase
|
|
59
60
|
assert_equal false, @r.member?
|
60
61
|
end
|
61
62
|
|
62
|
-
def
|
63
|
+
def test_init
|
63
64
|
singleton!
|
64
65
|
|
65
|
-
|
66
|
-
@r.
|
66
|
+
init = -> { }
|
67
|
+
@r.init &init
|
67
68
|
|
68
|
-
assert_equal
|
69
|
+
assert_equal init, @r.instance_variable_get("@__init")
|
69
70
|
end
|
70
71
|
|
71
72
|
def test_serialize
|
72
73
|
singleton!
|
73
74
|
|
74
|
-
serialize
|
75
|
-
@r.serialize &serialize
|
75
|
+
@r.serialize :name
|
76
76
|
|
77
|
-
assert_equal(
|
77
|
+
assert_equal({name: :joe}, @r.instance_variable_get("@__serialize").call({name: :joe, test: true}, {}, {}))
|
78
78
|
end
|
79
79
|
|
80
|
-
# def test_fetch_object
|
81
|
-
# singleton!
|
82
|
-
|
83
|
-
# Nested::Resource::FETCH.expects(:call).with(@r, {})
|
84
|
-
# @r.fetch_object({})
|
85
|
-
|
86
|
-
# fetch = -> { }
|
87
|
-
# @r.fetch &fetch
|
88
|
-
|
89
|
-
# fetch.expects(:call).with(@r, {})
|
90
|
-
# @r.fetch_object({})
|
91
|
-
# end
|
92
|
-
|
93
|
-
# def test_serialize_object
|
94
|
-
# singleton!
|
95
|
-
|
96
|
-
# Nested::Resource::SERIALIZE.expects(:call).with({name: :joe}, {}, @r)
|
97
|
-
# @r.serialize_object({name: :joe}, {})
|
98
|
-
|
99
|
-
# serialize = -> { }
|
100
|
-
# @r.serialize &serialize
|
101
|
-
|
102
|
-
# serialize.expects(:call).with({name: :joe}, {}, @r)
|
103
|
-
# @r.serialize_object({name: :joe}, {})
|
104
|
-
# end
|
105
|
-
|
106
80
|
def test_route
|
107
81
|
# no parent
|
108
82
|
singleton!
|
@@ -336,13 +310,6 @@ class NestedTest < Test::Unit::TestCase
|
|
336
310
|
assert_equal [{method: :post, action: :action}], @r.actions
|
337
311
|
end
|
338
312
|
|
339
|
-
def test_fetcher
|
340
|
-
singleton!
|
341
|
-
assert_equal(@r.fetcher, Nested::Resource::FETCH)
|
342
|
-
@r.instance_variable_set("@__fetch", 123)
|
343
|
-
assert_equal(@r.fetcher, 123)
|
344
|
-
end
|
345
|
-
|
346
313
|
def test_serializer
|
347
314
|
singleton!
|
348
315
|
assert_equal(@r.serializer, Nested::Resource::SERIALIZE)
|
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.6
|
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-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|