Module: Jekyll::Documents::FileTypeIcons
- Defined in:
- lib/jekyll/documents/file_type_icons.rb
Overview
Maps file extensions to local SVG icon files with configurable icon sets Provides Liquid filters for displaying file type icons Icons are based on designs from svgrepo.com and included in the gem
Constant Summary collapse
- ICON_MAP =
Mapping of file extensions to icon files for each icon set Icons sourced from svgrepo.com collections: Color: https://www.svgrepo.com/collection/file-type-doctype-vectors/ Lines: https://www.svgrepo.com/collection/simple-file-types-line-vectors/ Minimal: https://www.svgrepo.com/collection/file-type-minimal-icons/ Ultra-minimal: Based on simple document icons
{ "color" => { "pdf" => "/assets/icons/color/pdf-document-svgrepo-com.svg", "docx" => "/assets/icons/color/word-document-svgrepo-com.svg", "doc" => "/assets/icons/color/word-document-svgrepo-com.svg", "pptx" => "/assets/icons/color/ppt-document-svgrepo-com.svg", "ppt" => "/assets/icons/color/ppt-document-svgrepo-com.svg", "xlsx" => "/assets/icons/color/excel-document-svgrepo-com.svg", "xls" => "/assets/icons/color/excel-document-svgrepo-com.svg", "odt" => "/assets/icons/color/word-document-svgrepo-com.svg", "ods" => "/assets/icons/color/excel-document-svgrepo-com.svg", "odp" => "/assets/icons/color/ppt-document-svgrepo-com.svg", "txt" => "/assets/icons/color/txt-document-svgrepo-com.svg", "zip" => "/assets/icons/color/zip-document-svgrepo-com.svg", "mp3" => "/assets/icons/color/audio-document-svgrepo-com.svg", "mp4" => "/assets/icons/color/mp4-document-svgrepo-com.svg", "jpg" => "/assets/icons/color/image-document-svgrepo-com.svg", "jpeg" => "/assets/icons/color/image-document-svgrepo-com.svg", "png" => "/assets/icons/color/image-document-svgrepo-com.svg", "csv" => "/assets/icons/color/csv-document-svgrepo-com.svg", "html" => "/assets/icons/color/html-document-svgrepo-com.svg", "xml" => "/assets/icons/color/xml-document-svgrepo-com.svg", "rtf" => "/assets/icons/color/rtf-document-svgrepo-com.svg" }, "lines" => { "pdf" => "/assets/icons/lines/pdf-svgrepo-com.svg", "docx" => "/assets/icons/lines/doc-svgrepo-com.svg", "doc" => "/assets/icons/lines/doc-svgrepo-com.svg", "pptx" => "/assets/icons/lines/ppt-svgrepo-com.svg", "ppt" => "/assets/icons/lines/ppt-svgrepo-com.svg", "xlsx" => "/assets/icons/lines/xls-svgrepo-com.svg", "xls" => "/assets/icons/lines/xls-svgrepo-com.svg", "odt" => "/assets/icons/lines/doc-svgrepo-com.svg", "ods" => "/assets/icons/lines/xls-svgrepo-com.svg", "odp" => "/assets/icons/lines/ppt-svgrepo-com.svg", "txt" => "/assets/icons/lines/txt-svgrepo-com.svg", "zip" => "/assets/icons/lines/zip-svgrepo-com.svg", "mp3" => "/assets/icons/lines/mp3-svgrepo-com.svg", "mp4" => "/assets/icons/lines/mp4-svgrepo-com.svg", "jpg" => "/assets/icons/lines/jpg-svgrepo-com.svg", "jpeg" => "/assets/icons/lines/jpg-svgrepo-com.svg", "png" => "/assets/icons/lines/png-svgrepo-com.svg" }, "minimal" => { "pdf" => "/assets/icons/minimal/pdf-svgrepo-com.svg", "docx" => "/assets/icons/minimal/doc-svgrepo-com.svg", "doc" => "/assets/icons/minimal/doc-svgrepo-com.svg", "pptx" => "/assets/icons/minimal/ppt-svgrepo-com.svg", "ppt" => "/assets/icons/minimal/ppt-svgrepo-com.svg", "xlsx" => "/assets/icons/minimal/xls-svgrepo-com.svg", "xls" => "/assets/icons/minimal/xls-svgrepo-com.svg", "odt" => "/assets/icons/minimal/doc-svgrepo-com.svg", "ods" => "/assets/icons/minimal/xls-svgrepo-com.svg", "odp" => "/assets/icons/minimal/ppt-svgrepo-com.svg", "txt" => "/assets/icons/minimal/txt-svgrepo-com.svg", "zip" => "/assets/icons/minimal/zip-svgrepo-com.svg", "mp3" => "/assets/icons/minimal/mp3-svgrepo-com.svg", "mp4" => "/assets/icons/minimal/mp4-svgrepo-com.svg", "jpg" => "/assets/icons/minimal/jpg-svgrepo-com.svg", "jpeg" => "/assets/icons/minimal/jpg-svgrepo-com.svg", "png" => "/assets/icons/minimal/png-svgrepo-com.svg" }, "ultra-minimal" => { "pdf" => "/assets/icons/ultra-minimal/pdf.svg", "docx" => "/assets/icons/ultra-minimal/doc.svg", "doc" => "/assets/icons/ultra-minimal/doc.svg", "pptx" => "/assets/icons/ultra-minimal/ppt.svg", "ppt" => "/assets/icons/ultra-minimal/ppt.svg", "xlsx" => "/assets/icons/ultra-minimal/xls.svg", "xls" => "/assets/icons/ultra-minimal/xls.svg", "odt" => "/assets/icons/ultra-minimal/doc.svg", "ods" => "/assets/icons/ultra-minimal/xls.svg", "odp" => "/assets/icons/ultra-minimal/ppt.svg", "txt" => "/assets/icons/ultra-minimal/txt.svg", "zip" => "/assets/icons/ultra-minimal/zip.svg", "mp3" => "/assets/icons/ultra-minimal/mp3.svg", "mp4" => "/assets/icons/ultra-minimal/mp4.svg", "jpg" => "/assets/icons/ultra-minimal/jpg.svg", "png" => "/assets/icons/ultra-minimal/png.svg" } }.freeze
Class Method Summary collapse
-
.icon_for(file_type, icon_set = "color") ⇒ String
Returns the icon URL for a given file type and explicit icon set.
Instance Method Summary collapse
-
#file_type_icon(file_type, context = nil) ⇒ String
Returns the icon URL for a given file type using configured icon set.
-
#file_type_icon_tag(file_type, css_class: "file-icon", alt: nil, context: nil) ⇒ String
Returns an HTML img tag for the file type icon.
Class Method Details
.icon_for(file_type, icon_set = "color") ⇒ String
Returns the icon URL for a given file type and explicit icon set
104 105 106 107 108 |
# File 'lib/jekyll/documents/file_type_icons.rb', line 104 def self.icon_for(file_type, icon_set = "color") icons = ICON_MAP[icon_set] || ICON_MAP["color"] icons[file_type.to_s.downcase] || "/assets/icons/#{icon_set}/unknown-document-svgrepo-com.svg" end |
Instance Method Details
#file_type_icon(file_type, context = nil) ⇒ String
Returns the icon URL for a given file type using configured icon set
116 117 118 |
# File 'lib/jekyll/documents/file_type_icons.rb', line 116 def file_type_icon(file_type, context = nil) Jekyll::Documents::FileTypeIcons.icon_for(file_type, get_icon_set(context)) end |
#file_type_icon_tag(file_type, css_class: "file-icon", alt: nil, context: nil) ⇒ String
Returns an HTML img tag for the file type icon
129 130 131 132 133 |
# File 'lib/jekyll/documents/file_type_icons.rb', line 129 def file_type_icon_tag(file_type, css_class: "file-icon", alt: nil, context: nil) url = file_type_icon(file_type, context) alt_text = alt || "#{file_type.to_s.upcase} file" %(<img src="#{url}" alt="#{alt_text}" class="#{css_class}" />) end |