pub_grub 0.5.0.alpha2 → 0.5.0.alpha3
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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/pub_grub/partial_solution.rb +15 -18
- data/lib/pub_grub/version.rb +1 -1
- data/lib/pub_grub/version_range.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2318849a1cea100c14280880d29b53fad23da9bb6e56035d16c8526304d02570
|
4
|
+
data.tar.gz: 06f54f9d158a9cc20684ae48eaccb2626276a8c3bec4e8b5ef301e1ceafb1958
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f043f66fe1ba07cbf5bf9e60c632e4a1100456125a66e09ba6512835808a1c5187576f4106c64ff600397d4a7ff87e590e8f30b2d5395d94d72a0358e6ac8f88
|
7
|
+
data.tar.gz: f46c47b204a5e7dc2b51a1e9eb26f798289a9d674adef3b2102c6fe2d697cbdf4509dca66482e317968fc386ad31f51638d682b4bfa90dcc75f62ec6205f5cd1
|
data/Gemfile.lock
CHANGED
@@ -21,7 +21,8 @@ module PubGrub
|
|
21
21
|
package = term.package
|
22
22
|
return :overlap if !@terms.key?(package)
|
23
23
|
|
24
|
-
@
|
24
|
+
@relation_cache[package][term] ||=
|
25
|
+
@terms[package].relation(term)
|
25
26
|
end
|
26
27
|
|
27
28
|
def satisfies?(term)
|
@@ -33,21 +34,12 @@ module PubGrub
|
|
33
34
|
end
|
34
35
|
|
35
36
|
def satisfier(term)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
if assigned_term
|
40
|
-
assigned_term = assigned_term.intersect(assignment.term)
|
41
|
-
else
|
42
|
-
assigned_term = assignment.term
|
37
|
+
assignment =
|
38
|
+
@assignments_by[term.package].bsearch do |assignment|
|
39
|
+
@cumulative_assignments[assignment].satisfies?(term)
|
43
40
|
end
|
44
41
|
|
45
|
-
|
46
|
-
return assignment
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
raise "#{term} unsatisfied"
|
42
|
+
assignment || raise("#{term} unsatisfied")
|
51
43
|
end
|
52
44
|
|
53
45
|
# A list of unsatisfied terms
|
@@ -94,32 +86,37 @@ module PubGrub
|
|
94
86
|
|
95
87
|
# { Package => Array<Assignment> }
|
96
88
|
@assignments_by = Hash.new { |h,k| h[k] = [] }
|
89
|
+
@cumulative_assignments = {}.compare_by_identity
|
97
90
|
|
98
91
|
# { Package => Package::Version }
|
99
92
|
@decisions = {}
|
100
93
|
|
101
94
|
# { Package => Term }
|
102
95
|
@terms = {}
|
96
|
+
@relation_cache = Hash.new { |h,k| h[k] = {} }
|
103
97
|
|
104
98
|
# { Package => Boolean }
|
105
99
|
@required = Set.new
|
106
100
|
end
|
107
101
|
|
108
102
|
def add_assignment(assignment)
|
109
|
-
@assignments << assignment
|
110
|
-
@assignments_by[assignment.term.package] << assignment
|
111
|
-
|
112
103
|
term = assignment.term
|
113
104
|
package = term.package
|
114
105
|
|
106
|
+
@assignments << assignment
|
107
|
+
@assignments_by[package] << assignment
|
108
|
+
|
115
109
|
@required.add(package) if term.positive?
|
116
110
|
|
117
111
|
if @terms.key?(package)
|
118
112
|
old_term = @terms[package]
|
119
113
|
@terms[package] = old_term.intersect(term)
|
120
114
|
else
|
121
|
-
@terms[
|
115
|
+
@terms[package] = term
|
122
116
|
end
|
117
|
+
@relation_cache[package].clear
|
118
|
+
|
119
|
+
@cumulative_assignments[assignment] = @terms[package]
|
123
120
|
end
|
124
121
|
end
|
125
122
|
end
|
data/lib/pub_grub/version.rb
CHANGED