# File mime/types.rb, line 221 221: def initialize(arg, &block) 222: case arg 223: when MIME::Type 224: __create(arg.content_type) do 225: init_extensions(arg.extensions) 226: init_encoding(arg.encoding) 227: init_system(arg.system) 228: end 229: when Array 230: __create(arg[0]) do 231: init_extensions(arg[1]) 232: init_encoding(arg[2]) 233: init_system(arg[3]) 234: end 235: when Hash 236: cty = arg.key?('type') ? arg['type'] : 237: arg.key?('content-type') ? arg['content-type'] : 238: arg.key?('Content-Type') ? arg['Content-Type'] : 239: arg.key?('content_type') ? arg['content_type'] : 240: nil 241: ext = arg.key?('extensions') ? arg['extensions'] : 242: arg.key?('Extensions') ? arg['Extensions'] : nil 243: [arg['extensions']].flatten 244: enc = arg.key?('encoding') ? arg['encoding'] : 245: arg.key?('content-transfer-encoding') ? 246: arg['content-transfer-encoding'] : 247: arg.key?('Content-Transfer-Encoding') ? 248: arg['Content-Transfer-Encoding'] : 249: arg.key?('content_encoding') ? 250: arg['content_encoding'] : nil 251: osy = arg.key?('system') ? arg['system'] : 252: arg.key?('System') ? arg['System'] : nil 253: 254: __create(cty) do 255: init_extensions(ext) 256: init_encoding(enc) 257: init_system(osy) 258: end 259: when String 260: __create(arg, &block) 261: else 262: raise TypeError, 263: "Received #{arg.class} when expecting " \ 264: "MIME::Type, Array, Hash, or String only." 265: end 266: end