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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Yjk2YzExZTNhODI3MzhkNjEzYjU4ZmJiODdmY2Y2ODZiNTFkMzQzMQ==
4
+ MjBhMjQ3M2U0OGNiNjcwM2RlNzIyNjNmOTIzYmVjYTMyM2I1ODdlMw==
5
5
  data.tar.gz: !binary |-
6
- ODFiZDJkZjNmNWIyMmJjOWY4YzdmMDIxODgzMTMwZTkyNjE5MDk5OQ==
6
+ NmQ5NDYyMjE0MGNiMWQ1MmY4N2FkMDYxODE1NTEyMzg1ZjJiZmMzMQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NzVkMGZkYzM2NTFlYjYyZDFjMWQxYTZjNGYzNTUyZmE0NGYyYzc5YTkyOWQw
10
- ODE4NThmZjQxYmJlMDE0ZTEyNTQ2ODA3ZWIwNTdlOTA4ZjBkNmMzZmU0MzU3
11
- MTlkNjA4ZWFlZTZmZjVlOWI5ZWYzOTlhYjE4NTg2NGMxODE2Y2E=
9
+ YTFkMzQxNjIzYTU1MzRlYzRiYTcyYTRlN2I4MmU2MTRjNWM2MWU0Njg5YmNj
10
+ MTA2M2Y1YzVkNDJjNjVhMThiZDg3YzE5ZjE0NDQ1YjllY2U5Yjc5Yzk0ZDg1
11
+ YzEwM2NmMjBmYzU2MzA2YjUzNTg2NDI5YjU0ODcxMmZmNjFmODg=
12
12
  data.tar.gz: !binary |-
13
- MDc3NzRlOTE5NDMxNDcxZmQ1YzA3NzY5YjFjMTc0ZDBhOTZjZGFlNDIwOTI1
14
- OWZkNjAwMmU3NzQ4ZTcxNmY2MTQ5NzM5Y2ZmZTAxNjJkZTQxOGNhNzQzMjRl
15
- ZTc1NDA4ZDNkMjBmYjdmNTY0Y2U2MmZkODc2MjljNmUyMjI0YjA=
13
+ YzdjYzU5NGQ0ZjcwOTI4ODkzY2ZlMGY3NGNhN2Q1Y2U4YWM4YmI5NzM3ZmNl
14
+ MDU3NzMwNTNmODBjYjk5NzczZjdmYTZhYjcyMGRhYzIxZGFiYTQ2MzE1Mjk5
15
+ NWViNDIxNWQ4YTIyZmIzOTcxODU3NDZmOTE0YTIwNTY0MmE4YTc=
@@ -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
- parent.lookup(key)
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
- self.container.inject(object)
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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Encase
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -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.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-01-18 00:00:00.000000000 Z
11
+ date: 2014-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler