Parent

Included Modules

Class Index [+]

Quicksearch

Bundler::SpecSet

Public Class Methods

new(specs) click to toggle source
    # File lib/bundler/spec_set.rb, line 12
12:     def initialize(specs)
13:       @specs = specs.sort_by { |s| s.name }
14:     end

Public Instance Methods

[](key) click to toggle source
    # File lib/bundler/spec_set.rb, line 56
56:     def [](key)
57:       key = key.name if key.respond_to?(:name)
58:       lookup[key].reverse
59:     end
[]=(key, value) click to toggle source
    # File lib/bundler/spec_set.rb, line 61
61:     def []=(key, value)
62:       @specs << value
63:       @lookup = nil
64:       @sorted = nil
65:       value
66:     end
for(dependencies, skip = [], check = false, match_current_platform = false) click to toggle source
    # File lib/bundler/spec_set.rb, line 16
16:     def for(dependencies, skip = [], check = false, match_current_platform = false)
17:       handled, deps, specs = {}, dependencies.dup, []
18:       skip << 'bundler'
19: 
20:       until deps.empty?
21:         dep = deps.shift
22:         next if handled[dep] || skip.include?(dep.name)
23: 
24:         spec = lookup[dep.name].find do |s|
25:           match_current_platform ?
26:             Gem::Platform.match(s.platform) :
27:             s.match_platform(dep.__platform)
28:         end
29: 
30:         handled[dep] = true
31: 
32:         if spec
33:           specs << spec
34: 
35:           spec.dependencies.each do |d|
36:             next if d.type == :development
37:             d = DepProxy.new(d, dep.__platform) unless match_current_platform
38:             deps << d
39:           end
40:         elsif check
41:           return false
42:         end
43:       end
44: 
45:       if spec = lookup['bundler'].first
46:         specs << spec
47:       end
48: 
49:       check ? true : SpecSet.new(specs)
50:     end
materialize(deps, missing_specs = nil) click to toggle source
    # File lib/bundler/spec_set.rb, line 80
80:     def materialize(deps, missing_specs = nil)
81:       materialized = self.for(deps, [], false, true).to_a
82:       deps = materialized.map {|s| s.name }.uniq
83:       materialized.map! do |s|
84:         next s unless s.is_a?(LazySpecification)
85:         s.source.dependency_names = deps if s.source.respond_to?(:dependency_names=)
86:         spec = s.__materialize__
87:         if missing_specs
88:           missing_specs << s unless spec
89:         else
90:           raise GemNotFound, "Could not find #{s.full_name} in any of the sources" unless spec
91:         end
92:         spec if spec
93:       end
94:       SpecSet.new(materialized.compact)
95:     end
merge(set) click to toggle source
     # File lib/bundler/spec_set.rb, line 97
 97:     def merge(set)
 98:       arr = sorted.dup
 99:       set.each do |s|
100:         next if arr.any? { |s2| s2.name == s.name && s2.version == s.version && s2.platform == s.platform }
101:         arr << s
102:       end
103:       SpecSet.new(arr)
104:     end
sort!() click to toggle source
    # File lib/bundler/spec_set.rb, line 68
68:     def sort!
69:       self
70:     end
to_a() click to toggle source
    # File lib/bundler/spec_set.rb, line 72
72:     def to_a
73:       sorted.dup
74:     end
to_hash() click to toggle source
    # File lib/bundler/spec_set.rb, line 76
76:     def to_hash
77:       lookup.dup
78:     end
valid_for?(deps) click to toggle source
    # File lib/bundler/spec_set.rb, line 52
52:     def valid_for?(deps)
53:       self.for(deps, [], true)
54:     end

Private Instance Methods

lookup() click to toggle source
     # File lib/bundler/spec_set.rb, line 113
113:     def lookup
114:       @lookup ||= begin
115:         lookup = Hash.new { |h,k| h[k] = [] }
116:         specs = @specs.sort_by do |s|
117:           s.platform.to_s == 'ruby' ? "\00"" : s.platform.to_s
118:         end
119:         specs.reverse_each do |s|
120:           lookup[s.name] << s
121:         end
122:         lookup
123:       end
124:     end
sorted() click to toggle source
     # File lib/bundler/spec_set.rb, line 108
108:     def sorted
109:       rake = @specs.find { |s| s.name == 'rake' }
110:       @sorted ||= ([rake] + tsort).compact.uniq
111:     end
tsort_each_child(s) click to toggle source
     # File lib/bundler/spec_set.rb, line 130
130:     def tsort_each_child(s)
131:       s.dependencies.sort_by { |d| d.name }.each do |d|
132:         next if d.type == :development
133:         lookup[d.name].each { |s2| yield s2 }
134:       end
135:     end
tsort_each_node() click to toggle source
     # File lib/bundler/spec_set.rb, line 126
126:     def tsort_each_node
127:       @specs.each { |s| yield s }
128:     end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.