Class: Heel::MimeMap
- Inherits:
-
Object
- Object
- Heel::MimeMap
- Defined in:
- lib/heel/mime_map.rb
Overview
MimeMap is a Heel specific mime mapping utility. It is based upon MIME::Type and adds some additional mime types. It can also say what the icon name for a particular mime type is.
Class Method Summary collapse
-
.additional_mime_types ⇒ Object
if any other mime types are needed, add them directly via the mime-types calls.
- .icons_by_mime_type ⇒ Object
Instance Method Summary collapse
- #default_mime_type ⇒ Object
-
#icon_for(mime_type) ⇒ Object
return the icon name for a particular mime type.
-
#initialize ⇒ MimeMap
constructor
A new instance of MimeMap.
-
#mime_type_of(f) ⇒ Object
returns the mime type of the file at a given pathname.
Constructor Details
#initialize ⇒ MimeMap
Returns a new instance of MimeMap.
46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/heel/mime_map.rb', line 46 def initialize MimeMap.additional_mime_types.each do |mt| existing_type = MIME::Types[mt] if existing_type.empty? then MIME::Types.add(mt) else type = existing_type.first type.add_extensions(mt.extensions) end end end |
Class Method Details
.additional_mime_types ⇒ Object
if any other mime types are needed, add them directly via the mime-types calls.
39 40 41 42 43 |
# File 'lib/heel/mime_map.rb', line 39 def additional_mime_types [ MIME::Type.new( 'text/plain' ) { |t| t.extensions = %w[ rb rdoc rhtml md markdown ] }, ] end |
.icons_by_mime_type ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/heel/mime_map.rb', line 16 def icons_by_mime_type @icons_by_mime_type ||= { "text/plain" => "page_white_text.png", "image" => "picture.png", "pdf" => "page_white_acrobat.png", "xml" => "page_white_code.png", "compress" => "compress.png", "gzip" => "compress.png", "zip" => "compress.png", "application/xhtml+xml" => "xhtml.png", "application/word" => "page_word.png", "application/excel" => "page_excel.png", "application/powerpoint" => "page_white_powerpoint.png", "text/html" => "html.png", "application" => "application.png", "text" => "page_white_text.png", :directory => "folder.png", :default => "page_white.png", } end |
Instance Method Details
#default_mime_type ⇒ Object
58 59 60 |
# File 'lib/heel/mime_map.rb', line 58 def default_mime_type @default_mime_type ||= MIME::Types["application/octet-stream"].first end |
#icon_for(mime_type) ⇒ Object
return the icon name for a particular mime type
70 71 72 73 74 75 76 77 |
# File 'lib/heel/mime_map.rb', line 70 def icon_for(mime_type) icon = nil [:content_type, :sub_type, :media_type].each do |t| icon = MimeMap.icons_by_mime_type[mime_type.send(t)] return icon if icon end icon = MimeMap.icons_by_mime_type[:default] end |
#mime_type_of(f) ⇒ Object
returns the mime type of the file at a given pathname
64 65 66 |
# File 'lib/heel/mime_map.rb', line 64 def mime_type_of(f) MIME::Types.of(f).last || default_mime_type end |