Google

# 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