From ed5d5c5829ccd91261b27438e2aa146f7aec755e Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 8 Dec 2009 07:19:09 +0000 Subject: * lib/rubygems: update to 1.3.5. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@26049 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rubygems/source_index.rb | 46 +++++++++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 20 deletions(-) (limited to 'lib/rubygems/source_index.rb') diff --git a/lib/rubygems/source_index.rb b/lib/rubygems/source_index.rb index c616aefcc0..d033fd40fe 100644 --- a/lib/rubygems/source_index.rb +++ b/lib/rubygems/source_index.rb @@ -30,7 +30,7 @@ class Gem::SourceIndex include Gem::UserInteraction - attr_reader :gems, :prerelease_gems # :nodoc: + attr_reader :gems # :nodoc: ## # Directories to use to refresh this SourceIndex when calling refresh! @@ -122,16 +122,22 @@ class Gem::SourceIndex # #prerelease_gems def initialize(specifications={}) - @gems, @prerelease_gems = [{}, {}] + @gems = {} specifications.each{ |full_name, spec| add_spec spec } @spec_dirs = nil end - ## - # Both regular and prerelease gems - + # TODO: remove method def all_gems - @gems.merge @prerelease_gems + @gems + end + + def prerelease_gems + @gems.reject{ |name, gem| !gem.version.prerelease? } + end + + def released_gems + @gems.reject{ |name, gem| gem.version.prerelease? } end ## @@ -153,8 +159,8 @@ class Gem::SourceIndex end ## - # Returns an Array specifications for the latest versions of each gem in - # this index. + # Returns an Array specifications for the latest released versions + # of each gem in this index. def latest_specs result = Hash.new { |h,k| h[k] = [] } @@ -165,6 +171,7 @@ class Gem::SourceIndex curr_ver = spec.version prev_ver = latest.key?(name) ? latest[name].version : nil + next if curr_ver.prerelease? next unless prev_ver.nil? or curr_ver >= prev_ver or latest[name].platform != Gem::Platform::RUBY @@ -192,7 +199,14 @@ class Gem::SourceIndex # An array including only the prerelease gemspecs def prerelease_specs - @prerelease_gems.values + prerelease_gems.values + end + + ## + # An array including only the released gemspecs + + def released_specs + released_gems.values end ## @@ -201,11 +215,7 @@ class Gem::SourceIndex def add_spec(gem_spec, name = gem_spec.full_name) # No idea why, but the Indexer wants to insert them using original_name # instead of full_name. So we make it an optional arg. - if gem_spec.version.prerelease? - @prerelease_gems[name] = gem_spec - else - @gems[name] = gem_spec - end + @gems[name] = gem_spec end ## @@ -221,11 +231,7 @@ class Gem::SourceIndex # Remove a gem specification named +full_name+. def remove_spec(full_name) - if @gems.key? full_name then - @gems.delete full_name - else - @prerelease_gems.delete full_name - end + @gems.delete full_name end ## @@ -408,7 +414,7 @@ class Gem::SourceIndex end def ==(other) # :nodoc: - self.class === other and @gems == other.gems + self.class === other and @gems == other.gems end def dump -- cgit v1.2.3