deep_end 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +4 -2
- data/deep_end.gemspec +3 -3
- data/lib/deep_end/version.rb +1 -1
- data/spec/{lib/deep_end_spec.rb → deep_end_spec.rb} +12 -1
- metadata +14 -13
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# DeepEnd
|
2
2
|
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/deep_end.png)](http://badge.fury.io/rb/deep_end)
|
4
|
+
|
3
5
|
This gem processes a list of objects and their dependencies, ordering them so that dependencies are correctly resolved and checking for circular dependencies.
|
4
6
|
|
5
7
|
## Installation
|
@@ -23,7 +25,7 @@ The Graph is the only class you have to worry about:
|
|
23
25
|
dependency_graph = Graph.new
|
24
26
|
|
25
27
|
Add any objects you like to it, along with an array of any other objects that they depend on:
|
26
|
-
|
28
|
+
|
27
29
|
# Create objects - you can use any objects/instances
|
28
30
|
dependency_a = {name: 'a'}
|
29
31
|
dependency_b = {name: 'b'}
|
@@ -46,7 +48,7 @@ Whenever a new object is added with `add_dependency`, the graph re-calculates de
|
|
46
48
|
be added multiple times with different dependencies. Dependencies are cumulative, so adding an object for
|
47
49
|
a second time with different dependencies will result in the object having both sets of dependencies.
|
48
50
|
|
49
|
-
If an object is added with itself as a dependency, a `SelfDependencyError` will be raised.
|
51
|
+
If an object is added with itself as a dependency, a `SelfDependencyError` will be raised.
|
50
52
|
|
51
53
|
If a circular dependency is detected a `CircularDependencyError` will be raise.
|
52
54
|
|
data/deep_end.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |gem|
|
|
9
9
|
gem.authors = ["Pedr Browne"]
|
10
10
|
gem.email = ["pedr.browne@gmail.com"]
|
11
11
|
gem.description = %q{Simple dependency resolver}
|
12
|
-
gem.summary = %q{This gem processes a list of objects and their dependencies, ordering them
|
12
|
+
gem.summary = %q{This gem processes a list of objects and their dependencies, ordering them in such a way that dependencies are correctly resolved. It checks for circular dependencies and self-dependencies.}
|
13
13
|
gem.homepage = "https://github.com/stationkeeping/Deep-End"
|
14
14
|
|
15
15
|
gem.files = `git ls-files`.split($/)
|
@@ -17,6 +17,6 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
|
20
|
-
gem.add_development_dependency
|
21
|
-
gem.add_development_dependency
|
20
|
+
gem.add_development_dependency('rake', '~> 10.1')
|
21
|
+
gem.add_development_dependency('rspec', '~> 2.14')
|
22
22
|
end
|
data/lib/deep_end/version.rb
CHANGED
@@ -65,6 +65,18 @@ module DeepEnd
|
|
65
65
|
sorted_objects[2].should == @dependency_c
|
66
66
|
end
|
67
67
|
|
68
|
+
it 'should correctly order interdependent objects regardless of order added' do
|
69
|
+
# Add dependencies
|
70
|
+
@graph.add_dependency @dependency_a
|
71
|
+
@graph.add_dependency @dependency_b, [@dependency_a]
|
72
|
+
@graph.add_dependency @dependency_c, [@dependency_b, @dependency_a]
|
73
|
+
# Check order
|
74
|
+
sorted_objects = @graph.resolved_dependencies
|
75
|
+
sorted_objects[0].should == @dependency_a
|
76
|
+
sorted_objects[1].should == @dependency_b
|
77
|
+
sorted_objects[2].should == @dependency_c
|
78
|
+
end
|
79
|
+
|
68
80
|
it 'should raise a SelfDependencyError if an object is added as its own dependency' do
|
69
81
|
# Add dependencies
|
70
82
|
expect { @graph.add_dependency @dependency_a, [@dependency_a] }.to raise_error(SelfDependencyError)
|
@@ -106,7 +118,6 @@ module DeepEnd
|
|
106
118
|
sorted_objects[2].should == @dependency_f
|
107
119
|
end
|
108
120
|
|
109
|
-
|
110
121
|
end
|
111
122
|
|
112
123
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deep_end
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,40 +9,40 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-09-
|
12
|
+
date: 2013-09-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
21
|
+
version: '10.1'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '10.1'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: rspec
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version: '
|
37
|
+
version: '2.14'
|
38
38
|
type: :development
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: '
|
45
|
+
version: '2.14'
|
46
46
|
description: Simple dependency resolver
|
47
47
|
email:
|
48
48
|
- pedr.browne@gmail.com
|
@@ -59,7 +59,7 @@ files:
|
|
59
59
|
- deep_end.sublime-project
|
60
60
|
- lib/deep_end.rb
|
61
61
|
- lib/deep_end/version.rb
|
62
|
-
- spec/
|
62
|
+
- spec/deep_end_spec.rb
|
63
63
|
- spec/spec_helper.rb
|
64
64
|
homepage: https://github.com/stationkeeping/Deep-End
|
65
65
|
licenses: []
|
@@ -85,8 +85,9 @@ rubygems_version: 1.8.23
|
|
85
85
|
signing_key:
|
86
86
|
specification_version: 3
|
87
87
|
summary: This gem processes a list of objects and their dependencies, ordering them
|
88
|
-
|
88
|
+
in such a way that dependencies are correctly resolved. It checks for circular dependencies
|
89
|
+
and self-dependencies.
|
89
90
|
test_files:
|
90
|
-
- spec/
|
91
|
+
- spec/deep_end_spec.rb
|
91
92
|
- spec/spec_helper.rb
|
92
93
|
has_rdoc:
|