super_stack 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
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