build_modern_index (Gem::Indexer)

    # File lib/rubygems/indexer.rb, line 247
      def build_modern_index(index, file, name)
        say "Generating #{name} index"

        Gem.time "Generated #{name} index" do
          open(file, 'wb') do |io|
            specs = index.map do |*spec|
              # We have to splat here because latest_specs is an array,
              # while the others are hashes. See the TODO in source_index.rb
              spec = spec.flatten.last
              platform = spec.original_platform

              # win32-api-1.0.4-x86-mswin32-60
              unless String === platform then
                alert_warning "Skipping invalid platform in gem: #{spec.full_name}"
                next
              end

              platform = Gem::Platform::RUBY if platform.nil? or platform.empty?
              [spec.name, spec.version, platform]
            end

            specs = compact_specs(specs)
            Marshal.dump(specs, io)
          end
        end
      end