# File bundler/spec_set.rb, line 119
def <<(spec)
@specs << spec
end
# File bundler/spec_set.rb, line 46
def [](key)
key = key.name if key.respond_to?(:name)
lookup[key].reverse
end
# File bundler/spec_set.rb, line 51
def []=(key, value)
@specs << value
@lookup = nil
@sorted = nil
end
# File bundler/spec_set.rb, line 135
def each(&b)
sorted.each(&b)
end
# File bundler/spec_set.rb, line 108
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 14
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 69
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 83
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 98
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