encase 0.1.1 → 0.1.2
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 +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
|