# 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