Module: MultiMime
- Extended by:
- MultiMime
- Included in:
- MultiMime
- Defined in:
- lib/multi_mime.rb,
lib/multi_mime/adapter.rb,
lib/multi_mime/version.rb,
lib/multi_mime/null_type.rb,
lib/multi_mime/adapter_error.rb,
lib/multi_mime/adapters/mime_type.rb,
lib/multi_mime/adapters/mimemagic.rb,
lib/multi_mime/adapters/rack_mime.rb,
lib/multi_mime/adapters/mime_types.rb
Defined Under Namespace
Modules: Adapters Classes: Adapter, AdapterError, NullType
Constant Summary collapse
- REQUIREMENT_MAP =
[ [:mime_types, 'mime/types', :MIME].freeze, [:mimemagic, 'mimemagic', :MimeMagic].freeze, [:mime_type, 'action_dispatch/http/mime_type', :Mime].freeze, [:rack_mime, 'rack/mime', :Rack].freeze ]
- VERSION =
'1.0.1'
Instance Method Summary collapse
-
#adapter ⇒ Object
Get the current adapter class.
-
#default_adapter ⇒ Object
The default adapter based on what you currently have loaded and installed.
-
#reset_adapter ⇒ Object
Remove the currently loaded adapter.
-
#type_for(mime_type, opts = {}) ⇒ String
(also: #by_type)
Get mime type by mime type.
-
#type_for_extension(extension, opts = {}) ⇒ String
(also: #by_extension)
Get mime type by extension.
-
#type_for_file(file, opts = {}) ⇒ String
(also: #by_file)
Get mime type by file.
-
#type_for_path(path, opts = {}) ⇒ String
(also: #by_path)
Get mime type by path.
-
#use(new_adapter) ⇒ Object
(also: #adapter=)
Set the Mime parser utilizing a symbol, string, or class.
Instance Method Details
#adapter ⇒ Object
Get the current adapter class.
36 37 38 39 |
# File 'lib/multi_mime.rb', line 36 def adapter use(default_adapter) unless defined?(@adapter) # load default adapter @adapter end |
#default_adapter ⇒ Object
The default adapter based on what you currently have loaded and installed. First checks to see if any adapters are already loaded, then checks to see which are installed if none are loaded.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/multi_mime.rb', line 17 def default_adapter return :mime_types if defined?(::MIME::Types) return :mimemagic if defined?(::MimeMagic) return :mime_type if defined?(::Mime::Type) return :rack_mime if defined?(::Rack::Mime) REQUIREMENT_MAP.each do |adapter, library, clazz| begin require library return adapter rescue ::LoadError next end end fail 'MultiMime hasn\'t been able to detect a default_adapter' nil end |
#reset_adapter ⇒ Object
Remove the currently loaded adapter
56 57 58 |
# File 'lib/multi_mime.rb', line 56 def reset_adapter remove_instance_variable :@adapter if defined?(@adapter) end |
#type_for(mime_type, opts = {}) ⇒ String Also known as: by_type
Get mime type by mime type
66 67 68 69 70 |
# File 'lib/multi_mime.rb', line 66 def type_for(mime_type, opts = {}) fail ArgumentError, "Mime Type must be a String. #{mime_type.inspect} given." unless mime_type.is_a? String adapter = current_adapter(opts) adapter.type_for(mime_type, opts) end |
#type_for_extension(extension, opts = {}) ⇒ String Also known as: by_extension
Get mime type by extension
79 80 81 82 83 |
# File 'lib/multi_mime.rb', line 79 def type_for_extension(extension, opts = {}) fail ArgumentError, "Extension must be a String. #{extension.inspect} given." unless extension.is_a? String adapter = current_adapter(opts) adapter.type_for_extension(extension, opts) end |
#type_for_file(file, opts = {}) ⇒ String Also known as: by_file
Get mime type by file
105 106 107 108 109 |
# File 'lib/multi_mime.rb', line 105 def type_for_file(file, opts = {}) fail ArgumentError, "File must be a File. #{file.inspect} given." unless file.is_a? File adapter = current_adapter(opts) adapter.type_for_file(file, opts) end |
#type_for_path(path, opts = {}) ⇒ String Also known as: by_path
Get mime type by path
92 93 94 95 96 |
# File 'lib/multi_mime.rb', line 92 def type_for_path(path, opts = {}) fail ArgumentError, "Path must be a String. #{path.inspect} given." unless path.is_a? String adapter = current_adapter(opts) adapter.type_for_path(path, opts) end |
#use(new_adapter) ⇒ Object Also known as: adapter=
Set the Mime parser utilizing a symbol, string, or class.
48 49 50 51 52 |
# File 'lib/multi_mime.rb', line 48 def use(new_adapter) Thread.exclusive do @adapter = load_adapter(new_adapter) end end |