super_stack 0.2.1 → 0.2.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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c4e580db536cf127c7e92fd2e9644a3940270179
4
- data.tar.gz: 6ca39a7b1763c79731f76ec420c074794d334667
3
+ metadata.gz: 76b2ee5a212a3fc2b009157f49e6ce424f817fb2
4
+ data.tar.gz: 65f3658c66dde1b9f0337e186b8bdf45047c9ca5
5
5
  SHA512:
6
- metadata.gz: cc98e8fad596daa02f89e3301a108ccb023e0f89b4c569676e7b410d40f79ee1676dd6b2ea683ef85e0fd809753707ca296555a1dc82cace39ed2a71ada66d39
7
- data.tar.gz: cdf6180b1621fc8fc1a169915d1de62cfad89a5a930ac4af0d9a0eba28630a0fd1bb9293a495c015d57bcd18475f95a89dcf17b3c9281057ec305105120d6469
6
+ metadata.gz: d73177dd7b19273d826856dc01ce0adab2a17c25ec33dbce8c322ed2cc6a95351912e99c78f08106d1bcd858e76802ed88cfe5a2bfbb0cf1fccccfbe2de0287e
7
+ data.tar.gz: 082635a815bbb2179e980b289f962d6d76a7347fa086694b773e2043d084699ccf4e4a2cc60272fd73df7876b06a892f541bc863c3f3bc7034e1712227be0ba6
@@ -8,7 +8,7 @@ module SuperStack
8
8
 
9
9
  DEFAULT_LAYER_NAME = 'Unknown layer'
10
10
 
11
- attr_reader :file_name, :priority
11
+ attr_reader :file_name, :priority, :manager
12
12
 
13
13
  def priority=(priority)
14
14
  raise 'invalid priority' unless priority.is_a? Numeric
@@ -58,6 +58,7 @@ module SuperStack
58
58
  set_valid_name_for layer if layers.keys.include? layer.name
59
59
  layer.priority = get_unused_priority if layer.priority.nil?
60
60
  layers[layer.name] = layer
61
+ layer.instance_variable_set :@manager, self
61
62
  end
62
63
 
63
64
  def <<(layer)
@@ -11,9 +11,19 @@ module SuperStack
11
11
  end
12
12
 
13
13
  def self.merge(h1, h2)
14
- deep_cloned_source = Marshal::load(Marshal.dump(h1))
14
+ if h1.respond_to? :manager
15
+ saved_manager = h1.manager
16
+ h1.instance_variable_set :@manager, nil
17
+ end
18
+
19
+ begin
20
+ deep_cloned_source = Marshal::load(Marshal.dump(h1))
21
+ ensure
22
+ h1.instance_variable_set :@manager, saved_manager if h1.respond_to? :manager
23
+ end
15
24
  deep_cloned_source.extend DeepMergeWrapper
16
25
  deep_cloned_source.deep_merge! h2
26
+
17
27
  end
18
28
 
19
29
  end
@@ -1,3 +1,3 @@
1
1
  module SuperStack
2
- VERSION = '0.2.1'
2
+ VERSION = '0.2.2'
3
3
  end
data/spec/manager_spec.rb CHANGED
@@ -19,6 +19,11 @@ describe SuperStack::Manager do
19
19
  expect( subject.respond_to? :layers).to be_truthy
20
20
  end
21
21
 
22
+ it 'should be added as manager to added layers' do
23
+ subject.add_layer({})
24
+ expect(subject.layers.values.first.manager == subject).to be_truthy
25
+ end
26
+
22
27
  it 'should present layers ordered by priority' do
23
28
  l1 = SuperStack::Layer.new
24
29
  l1.priority = 1
@@ -36,12 +41,9 @@ describe SuperStack::Manager do
36
41
  expect(subject.to_a[1] == l2).to be_truthy
37
42
  end
38
43
 
39
- it 'should have a default policy' do
44
+ it 'should have a default merge policy' do
40
45
  expect( subject.respond_to? :default_merge_policy).to be_truthy
41
46
  expect( subject.respond_to? :'default_merge_policy=').to be_truthy
42
- end
43
-
44
- it 'should have a default merge policy' do
45
47
  expect( subject.default_merge_policy == SuperStack::Manager::DEFAULT_MERGE_POLICY).to be_truthy
46
48
  end
47
49
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: super_stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Laurent B.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-15 00:00:00.000000000 Z
11
+ date: 2014-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler