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