forresty
3/1/2015 - 8:58 AM

list_encodings.rb

#!/usr/bin/env ruby

encodings = Encoding.list.each_with_object({}) do |enc, full_list|
  full_list[enc.name] = [enc.name]
end

Encoding.aliases.each do |alias_name, base_name|
  fail "#{base_name} #{alias_name}" unless encodings[base_name]
  encodings[base_name] << alias_name
end

puts(
  encodings.values.sort_by { |base_name, *| base_name.downcase }.map do |base_name, *rest|
    if rest.empty?
      base_name
    else
      "#{base_name} (#{rest.join(', ')})"
    end
  end
)