search (Gem::SourceIndex)

    # File lib/rubygems/source_index.rb, line 203
        def search(gem_pattern, platform_only = false)
          version_requirement = nil
          only_platform = false

          case gem_pattern # TODO warn after 2008/03, remove three months after
          when Regexp then
            version_requirement = platform_only || Gem::Requirement.default
          when Gem::Dependency then
            only_platform = platform_only
            version_requirement = gem_pattern.version_requirements
            gem_pattern = if gem_pattern.name.empty? then
                            //
                          else
                            /^#{Regexp.escape gem_pattern.name}$/
                          end
          else
            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
          end

          specs = @gems.values.select do |spec|
            spec.name =~ gem_pattern and
              version_requirement.satisfied_by? spec.version
          end

          if only_platform then
            specs = specs.select do |spec|
              Gem::Platform.match spec.platform
            end
          end

          specs.sort_by { |s| s.sort_obj }
        end