class Utopia::Static::MimeTypeLoader
A class to assist with loading mime-type metadata.
Attributes
extensions[R]
Public Class Methods
extensions_for(types, library = MIME_TYPES)
click to toggle source
# File lib/utopia/static/mime_types.rb, line 71 def self.extensions_for(types, library = MIME_TYPES) loader = self.new(library) loader.expand(types) return loader.extensions end
new(library)
click to toggle source
# File lib/utopia/static/mime_types.rb, line 64 def initialize(library) @extensions = {} @library = library end
Public Instance Methods
expand(types)
click to toggle source
# File lib/utopia/static/mime_types.rb, line 88 def expand(types) types.each do |type| current_count = @extensions.size begin case type when Symbol self.expand(MIME_TYPES[type]) when Array @extensions["." + type[0]] = type[1] when String self.extract_extensions MIME::Types.of(type) when Regexp self.extract_extensions MIME::Types[type] when MIME::Type self.extract_extensions.call([type]) end rescue raise ExpansionError.new("#{self.class.name}: Error while processing #{type.inspect}!") end if @extensions.size == current_count raise ExpansionError.new("#{self.class.name}: Could not find any mime type for #{type.inspect}") end end end
extract_extensions(mime_types)
click to toggle source
# File lib/utopia/static/mime_types.rb, line 77 def extract_extensions(mime_types) mime_types.select{|mime_type| !mime_type.obsolete?}.each do |mime_type| mime_type.extensions.each do |ext| @extensions["." + ext] = mime_type.content_type end end end