Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →
instance method
Gem::Source#decode_content_addressable_tuples
decode_content_addressable_tuples(tuples, latest: false)
lib/rubygems/source.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.1.0-preview1/lib/rubygems/source.rb, line 211
def decode_content_addressable_tuples(tuples, latest: false)
ca_tuples = tuples.select(&:content_address)
return tuples if ca_tuples.empty?
decoded_tuples = ca_tuples.group_by(&:name).flat_map do |name, name_tuples|
rows = name_tuples.map do |tuple|
[tuple.name, tuple.version, tuple.version.to_s, tuple.content_address]
end
content_addressable_tuples(name, rows)
end
decoded_by_key = decoded_tuples.to_h do |tuple|
[[tuple.name, tuple.version, tuple.content_address], tuple]
end
decoded = tuples.filter_map do |tuple|
if tuple.content_address
decoded_by_key[[tuple.name, tuple.version, tuple.content_address]]
else
tuple
end
end
return decoded unless latest
decoded.group_by(&:name).flat_map do |_, name_tuples|
max_versions_by_platform(name_tuples)
end
end
Decodes content-addressable tuples (whose platform field holds the content address) into tuples carrying their real platform and Ruby ABI from the compact index /info metadata.