mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* lib/rubygems: Update to RubyGems master 4bdc4f2. Important changes
in this commit: RubyGems now chooses the test server port reliably. Patch by akr. Partial implementation of bundler's Gemfile format. Refactorings to improve the new resolver. Fixes bugs in the resolver. * test/rubygems: Tests for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43643 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
31d355aaa9
commit
4f6779bac7
75 changed files with 3143 additions and 616 deletions
|
@ -1,28 +1,40 @@
|
|||
require 'rubygems/source'
|
||||
|
||||
class Gem::SourceList
|
||||
|
||||
include Enumerable
|
||||
|
||||
##
|
||||
# Creates a new SourceList
|
||||
|
||||
def initialize
|
||||
@sources = []
|
||||
end
|
||||
|
||||
##
|
||||
# The sources in this list
|
||||
|
||||
attr_reader :sources
|
||||
|
||||
##
|
||||
# Creates a new SourceList from an array of sources.
|
||||
|
||||
def self.from(ary)
|
||||
list = new
|
||||
|
||||
if ary
|
||||
ary.each do |x|
|
||||
list << x
|
||||
end
|
||||
end
|
||||
list.replace ary
|
||||
|
||||
return list
|
||||
end
|
||||
|
||||
def initialize_copy(other)
|
||||
def initialize_copy(other) # :nodoc:
|
||||
@sources = @sources.dup
|
||||
end
|
||||
|
||||
##
|
||||
# Appends +obj+ to the source list which may be a Gem::Source, URI or URI
|
||||
# String.
|
||||
|
||||
def <<(obj)
|
||||
src = case obj
|
||||
when URI
|
||||
|
@ -37,8 +49,12 @@ class Gem::SourceList
|
|||
src
|
||||
end
|
||||
|
||||
##
|
||||
# Replaces this SourceList with the sources in +other+ See #<< for
|
||||
# acceptable items in +other+.
|
||||
|
||||
def replace(other)
|
||||
@sources.clear
|
||||
clear
|
||||
|
||||
other.each do |x|
|
||||
self << x
|
||||
|
@ -47,28 +63,58 @@ class Gem::SourceList
|
|||
self
|
||||
end
|
||||
|
||||
##
|
||||
# Removes all sources from the SourceList.
|
||||
|
||||
def clear
|
||||
@sources.clear
|
||||
end
|
||||
|
||||
##
|
||||
# Yields each source URI in the list.
|
||||
|
||||
def each
|
||||
@sources.each { |s| yield s.uri.to_s }
|
||||
end
|
||||
|
||||
##
|
||||
# Yields each source in the list.
|
||||
|
||||
def each_source(&b)
|
||||
@sources.each(&b)
|
||||
end
|
||||
|
||||
##
|
||||
# Returns true if there are no sources in this SourceList.
|
||||
|
||||
def empty?
|
||||
@sources.empty?
|
||||
end
|
||||
|
||||
def ==(other)
|
||||
to_a == other
|
||||
end
|
||||
|
||||
##
|
||||
# Returns an Array of source URI Strings.
|
||||
|
||||
def to_a
|
||||
@sources.map { |x| x.uri.to_s }
|
||||
end
|
||||
|
||||
alias_method :to_ary, :to_a
|
||||
|
||||
##
|
||||
# Returns the first source in the list.
|
||||
|
||||
def first
|
||||
@sources.first
|
||||
end
|
||||
|
||||
##
|
||||
# Returns true if this source list includes +other+ which may be a
|
||||
# Gem::Source or a source URI.
|
||||
|
||||
def include?(other)
|
||||
if other.kind_of? Gem::Source
|
||||
@sources.include? other
|
||||
|
@ -77,11 +123,14 @@ class Gem::SourceList
|
|||
end
|
||||
end
|
||||
|
||||
def delete(uri)
|
||||
if uri.kind_of? Gem::Source
|
||||
@sources.delete uri
|
||||
##
|
||||
# Deletes +source+ from the source list which may be a Gem::Source or a URI.
|
||||
|
||||
def delete source
|
||||
if source.kind_of? Gem::Source
|
||||
@sources.delete source
|
||||
else
|
||||
@sources.delete_if { |x| x.uri.to_s == uri.to_s }
|
||||
@sources.delete_if { |x| x.uri.to_s == source.to_s }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue