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 ]
- SEMAPHORE =
Mutex.new
- VERSION =
'1.1.0'
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.
38 39 40 41 |
# File 'lib/multi_mime.rb', line 38 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.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/multi_mime.rb', line 19 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
58 59 60 |
# File 'lib/multi_mime.rb', line 58 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
68 69 70 71 72 |
# File 'lib/multi_mime.rb', line 68 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
81 82 83 84 85 |
# File 'lib/multi_mime.rb', line 81 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
107 108 109 110 111 |
# File 'lib/multi_mime.rb', line 107 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
94 95 96 97 98 |
# File 'lib/multi_mime.rb', line 94 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.
50 51 52 53 54 |
# File 'lib/multi_mime.rb', line 50 def use(new_adapter) SEMAPHORE.synchronize do @adapter = load_adapter(new_adapter) end end |