lib/rubygems/source_index.rb in rubygems-update-0.9.5 vs lib/rubygems/source_index.rb in rubygems-update-1.0.0

- old
+ new

@@ -2,12 +2,10 @@ # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others. # All rights reserved. # See LICENSE.txt for permissions. #++ -require 'forwardable' - require 'rubygems' require 'rubygems/user_interaction' require 'rubygems/specification' module Gem @@ -21,11 +19,10 @@ # confusing when cached source fetchers where introduced. The # constant Gem::Cache is an alias for this class to allow old # YAMLized source index objects to load properly. # class SourceIndex - extend Forwardable include Enumerable include Gem::UserInteraction @@ -184,43 +181,43 @@ require 'rubygems/digest/sha2' Gem::SHA256.new.hexdigest(@gems[gem_full_name].to_yaml).to_s end - def_delegators :@gems, :size, :length + def size + @gems.size + end + alias length size # Find a gem by an exact match on the short name. def find_name(gem_name, version_requirement = Gem::Requirement.default) search(/^#{gem_name}$/, version_requirement) end - # Search for a gem by short name pattern and optional version + # Search for a gem by Gem::Dependency +gem_pattern+. If +only_platform+ + # is true, only gems matching Gem::Platform.local will be returned. An + # Array of matching Gem::Specification objects is returned. # - # gem_name:: - # [String] a partial for the (short) name of the gem, or - # [Regex] a pattern to match against the short name - # version_requirement:: - # [String | default=Gem::Requirement.default] version to - # find - # return:: - # [Array] list of Gem::Specification objects in sorted (version) - # order. Empty if not found. - # - def search(gem_pattern, platform_only_or_version_req = false) + # For backwards compatibility, a String or Regexp pattern may be passed as + # +gem_pattern+, and a Gem::Requirement for +platform_only+. This + # behavior is deprecated and will be removed. + def search(gem_pattern, platform_only = false) version_requirement = nil only_platform = false - case gem_pattern + case gem_pattern # TODO warn after 2008/03, remove three months after when Regexp then - version_requirement = platform_only_or_version_req || - Gem::Requirement.default + version_requirement = platform_only || Gem::Requirement.default when Gem::Dependency then - only_platform = platform_only_or_version_req + only_platform = platform_only version_requirement = gem_pattern.version_requirements - gem_pattern = gem_pattern.name.empty? ? // : /^#{gem_pattern.name}$/ + gem_pattern = if gem_pattern.name.empty? then + // + else + /^#{Regexp.escape gem_pattern.name}$/ + end else - version_requirement = platform_only_or_version_req || - Gem::Requirement.default + version_requirement = platform_only || Gem::Requirement.default gem_pattern = /#{gem_pattern}/i end unless Gem::Requirement === version_requirement then version_requirement = Gem::Requirement.create version_requirement