# File bundler/spec_set.rb, line 118
def <<(spec)
@specs << spec
end
# File bundler/spec_set.rb, line 45
def [](key)
key = key.name if key.respond_to?(:name)
lookup[key].reverse
end
# File bundler/spec_set.rb, line 50
def []=(key, value)
@specs << value
@lookup = nil
@sorted = nil
end
# File bundler/spec_set.rb, line 134
def each(&b)
sorted.each(&b)
end
# File bundler/spec_set.rb, line 107
def find_by_name_and_platform(name, platform)
@specs.detect {|spec| spec.name == name && spec.match_platform(platform) }
end
# File bundler/spec_set.rb, line 13
def for(dependencies, check = false, match_current_platform = false)
handled = []
deps = dependencies.dup
specs = []
loop do
break unless dep = deps.shift
next if handled.any?{|d| d.name == dep.name && (match_current_platform || d.__platform == dep.__platform) } || dep.name == "bundler"
handled << dep
specs_for_dep = spec_for_dependency(dep, match_current_platform)
if specs_for_dep.any?
match_current_platform ? specs += specs_for_dep : specs |= specs_for_dep
specs_for_dep.first.dependencies.each do |d|
next if d.type == :development
d = DepProxy.get_proxy(d, dep.__platform) unless match_current_platform
deps << d
end
elsif check
return false
end
end
if spec = lookup["bundler"].first
specs << spec
end
check ? true : specs
end
# File bundler/spec_set.rb, line 68
def materialize(deps)
materialized = self.for(deps, false, true)
materialized.map! do |s|
next s unless s.is_a?(LazySpecification)
s.source.local!
s.__materialize__ || s
end
SpecSet.new(materialized)
end
Materialize for all the specs in the spec set, regardless of what platform they're for This is in contrast to how for does platform filtering (and specifically different from how `materialize` calls `for` only for the current platform) @return [Array<Gem::Specification>]
# File bundler/spec_set.rb, line 82
def materialized_for_all_platforms
@specs.map do |s|
next s unless s.is_a?(LazySpecification)
s.source.local!
s.source.remote!
spec = s.__materialize__
raise GemNotFound, "Could not find #{s.full_name} in any of the sources" unless spec
spec
end
end
# File bundler/spec_set.rb, line 97
def merge(set)
arr = sorted.dup
set.each do |set_spec|
full_name = set_spec.full_name
next if arr.any? {|spec| spec.full_name == full_name }
arr << set_spec
end
SpecSet.new(arr)
end