Class: Practical::Views::IconForFileExtensionComponent
- Inherits:
-
BaseComponent
- Object
- ViewComponent::Base
- BaseComponent
- Practical::Views::IconForFileExtensionComponent
- Defined in:
- app/components/practical/views/icon_for_file_extension_component.rb
Instance Attribute Summary collapse
-
#extension ⇒ Object
readonly
Returns the value of attribute extension.
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(extension:) ⇒ IconForFileExtensionComponent
constructor
A new instance of IconForFileExtensionComponent.
- #render_icon(method_name:) ⇒ Object
Methods included from ElementHelper
Constructor Details
#initialize(extension:) ⇒ IconForFileExtensionComponent
Returns a new instance of IconForFileExtensionComponent.
6 7 8 9 |
# File 'app/components/practical/views/icon_for_file_extension_component.rb', line 6 def initialize(extension:) raise ArgumentError unless self.class.supported_extension?(extension: extension) @extension = extension.to_sym end |
Instance Attribute Details
#extension ⇒ Object (readonly)
Returns the value of attribute extension.
4 5 6 |
# File 'app/components/practical/views/icon_for_file_extension_component.rb', line 4 def extension @extension end |
Class Method Details
.supported_extension?(extension:) ⇒ Boolean
34 35 36 |
# File 'app/components/practical/views/icon_for_file_extension_component.rb', line 34 def self.supported_extension?(extension:) supported_extensions.include?(extension.to_sym) end |
.supported_extensions ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'app/components/practical/views/icon_for_file_extension_component.rb', line 38 def self.supported_extensions %i( csv pdf docx xlsx doc xls heic missing txt rtf numbers ).freeze end |
Instance Method Details
#call ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'app/components/practical/views/icon_for_file_extension_component.rb', line 11 def call case extension when :csv render_icon(method_name: :csv_icon) when :pdf render_icon(method_name: :pdf_icon) when :doc, :docx render_icon(method_name: :doc_icon) when :xls, :xlsx render_icon(method_name: :xls_icon) when :heic render_icon(method_name: :heic_icon) when :missing render_icon(method_name: :missing_file_icon) else render_icon(method_name: :txt_icon) end end |
#render_icon(method_name:) ⇒ Object
30 31 32 |
# File 'app/components/practical/views/icon_for_file_extension_component.rb', line 30 def render_icon(method_name:) render icon_set.public_send(method_name) end |