deep_end 0.0.9 → 0.0.10
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.
- 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
|
+
[](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:
|