encase 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/encase/container.rb +4 -3
- data/lib/encase/container_item.rb +10 -4
- data/lib/encase/object_item.rb +2 -2
- data/lib/encase/version.rb +1 -1
- data/spec/lib/encase/container_spec.rb +29 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MjBhMjQ3M2U0OGNiNjcwM2RlNzIyNjNmOTIzYmVjYTMyM2I1ODdlMw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NmQ5NDYyMjE0MGNiMWQ1MmY4N2FkMDYxODE1NTEyMzg1ZjJiZmMzMQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YTFkMzQxNjIzYTU1MzRlYzRiYTcyYTRlN2I4MmU2MTRjNWM2MWU0Njg5YmNj
|
10
|
+
MTA2M2Y1YzVkNDJjNjVhMThiZDg3YzE5ZjE0NDQ1YjllY2U5Yjc5Yzk0ZDg1
|
11
|
+
YzEwM2NmMjBmYzU2MzA2YjUzNTg2NDI5YjU0ODcxMmZmNjFmODg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YzdjYzU5NGQ0ZjcwOTI4ODkzY2ZlMGY3NGNhN2Q1Y2U4YWM4YmI5NzM3ZmNl
|
14
|
+
MDU3NzMwNTNmODBjYjk5NzczZjdmYTZhYjcyMGRhYzIxZGFiYTQ2MzE1Mjk5
|
15
|
+
NWViNDIxNWQ4YTIyZmIzOTcxODU3NDZmOTE0YTIwNTY0MmE4YTc=
|
data/lib/encase/container.rb
CHANGED
@@ -75,12 +75,13 @@ module Encase
|
|
75
75
|
self
|
76
76
|
end
|
77
77
|
|
78
|
-
def lookup(key)
|
78
|
+
def lookup(key, origin = nil)
|
79
79
|
if contains?(key)
|
80
80
|
item = @items[key]
|
81
|
-
item.instance
|
81
|
+
item.instance(origin)
|
82
82
|
elsif !parent.nil?
|
83
|
-
|
83
|
+
origin = self if origin.nil?
|
84
|
+
parent.lookup(key, origin)
|
84
85
|
else
|
85
86
|
raise KeyError.new("Key:#{key} not found in container.")
|
86
87
|
end
|
@@ -14,8 +14,14 @@ module Encase
|
|
14
14
|
self.value = value
|
15
15
|
end
|
16
16
|
|
17
|
-
def inject(object)
|
18
|
-
|
17
|
+
def inject(object, origin = nil)
|
18
|
+
if origin.nil?
|
19
|
+
container = self.container
|
20
|
+
else
|
21
|
+
container = origin
|
22
|
+
end
|
23
|
+
|
24
|
+
container.inject(object)
|
19
25
|
end
|
20
26
|
|
21
27
|
def reify
|
@@ -44,10 +50,10 @@ module Encase
|
|
44
50
|
end
|
45
51
|
|
46
52
|
# public api
|
47
|
-
def instance
|
53
|
+
def instance(origin = nil)
|
48
54
|
reify unless reified?
|
49
55
|
object = fetch
|
50
|
-
inject(object)
|
56
|
+
inject(object, origin)
|
51
57
|
|
52
58
|
object
|
53
59
|
end
|
data/lib/encase/object_item.rb
CHANGED
@@ -4,11 +4,11 @@ module Encase
|
|
4
4
|
class ObjectItem < ContainerItem
|
5
5
|
attr_accessor :injected
|
6
6
|
|
7
|
-
def inject(object)
|
7
|
+
def inject(object, origin = nil)
|
8
8
|
if self.injected
|
9
9
|
false
|
10
10
|
else
|
11
|
-
self.injected = super(object)
|
11
|
+
self.injected = super(object, origin)
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
data/lib/encase/version.rb
CHANGED
@@ -242,5 +242,34 @@ module Encase
|
|
242
242
|
expect(me.c).to eq('C')
|
243
243
|
end
|
244
244
|
end
|
245
|
+
|
246
|
+
context 'Nested Container with lazy resolution' do
|
247
|
+
it 'can resolve logger lazily issue #4' do
|
248
|
+
class Logger
|
249
|
+
end
|
250
|
+
|
251
|
+
class MagicLogger
|
252
|
+
end
|
253
|
+
|
254
|
+
class House
|
255
|
+
include Encase
|
256
|
+
needs :logger
|
257
|
+
end
|
258
|
+
|
259
|
+
container = Container.new
|
260
|
+
container.configure do
|
261
|
+
object :logger, Logger.new
|
262
|
+
factory :house, House
|
263
|
+
end
|
264
|
+
|
265
|
+
child = container.child
|
266
|
+
child.configure do
|
267
|
+
object :logger, MagicLogger.new
|
268
|
+
end
|
269
|
+
|
270
|
+
house = child.lookup(:house)
|
271
|
+
expect(house.logger).to be_a(MagicLogger)
|
272
|
+
end
|
273
|
+
end
|
245
274
|
end
|
246
275
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: encase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Darshan Sawardekar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|