class Gem::Source::Local

def load_specs(type) # :nodoc:

:nodoc:
def load_specs(type) # :nodoc:
  @load_specs_names[type] ||= begin
    names = []
    @specs = {}
    Dir["*.gem"].each do |file|
      pkg = Gem::Package.new(file)
      spec = pkg.spec
    rescue SystemCallError, Gem::Package::FormatError
      # ignore
    else
      tup = spec.name_tuple
      @specs[tup] = [File.expand_path(file), pkg]
      case type
      when :released
        unless pkg.spec.version.prerelease?
          names << pkg.spec.name_tuple
        end
      when :prerelease
        if pkg.spec.version.prerelease?
          names << pkg.spec.name_tuple
        end
      when :latest
        tup = pkg.spec.name_tuple
        cur = names.find {|x| x.name == tup.name }
        if !cur
          names << tup
        elsif cur.version < tup.version
          names.delete cur
          names << tup
        end
      else
        names << pkg.spec.name_tuple
      end
    end
    names
  end
end