
|
# File MIME/types.rb, line 219
def initialize(arg, &block)
case arg
when MIME::Type
__create(arg.content_type) do
init_extensions(arg.extensions)
init_encoding(arg.encoding)
init_system(arg.system)
end
when Array
__create(arg[0]) do
init_extensions(arg[1])
init_encoding(arg[2])
init_system(arg[3])
end
when Hash
cty = arg.key?('type') ? arg['type'] :
arg.key?('content-type') ? arg['content-type'] :
arg.key?('Content-Type') ? arg['Content-Type'] :
arg.key?('content_type') ? arg['content_type'] :
nil
ext = arg.key?('extensions') ? arg['extensions'] :
arg.key?('Extensions') ? arg['Extensions'] : nil
[arg['extensions']].flatten
enc = arg.key?('encoding') ? arg['encoding'] :
arg.key?('content-transfer-encoding') ?
arg['content-transfer-encoding'] :
arg.key?('Content-Transfer-Encoding') ?
arg['Content-Transfer-Encoding'] :
arg.key?('content_encoding') ?
arg['content_encoding'] : nil
osy = arg.key?('system') ? arg['system'] :
arg.key?('System') ? arg['System'] : nil
__create(cty) do
init_extensions(ext)
init_encoding(enc)
init_system(osy)
end
when String
__create(arg, &block)
else
raise TypeError,
"Received #{arg.class} when expecting " \
"MIME::Type, Array, Hash, or String only."
end
end
|