Module: Tramway::Decorators::ClassHelper
- Included in:
- ApplicationHelper
- Defined in:
- lib/tramway/decorators/class_helper.rb
Overview
Provides method to determine decorators classes
Class Method Summary collapse
- .decorator_class(object_or_array, decorator = nil, namespace = nil) ⇒ Object
- .decorator_class_name(object_or_array_or_class, namespace) ⇒ Object
-
.raise_error_if_object_empty(object_or_array, decorator) ⇒ Object
:reek:NilCheck { enabled: false }.
Class Method Details
.decorator_class(object_or_array, decorator = nil, namespace = nil) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/tramway/decorators/class_helper.rb', line 9 def decorator_class(object_or_array, decorator = nil, namespace = nil) raise_error_if_object_empty object_or_array, decorator return decorator if decorator.present? begin class_name = decorator_class_name(object_or_array, namespace) class_name.constantize rescue NameError raise NameError, "You should define #{class_name} decorator class." end end |
.decorator_class_name(object_or_array_or_class, namespace) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/tramway/decorators/class_helper.rb', line 22 def decorator_class_name(object_or_array_or_class, namespace) klass = if Tramway::Decorators::CollectionDecorators.collection?(object_or_array_or_class) object_or_array_or_class.first.class elsif object_or_array_or_class.is_a?(Class) object_or_array_or_class else object_or_array_or_class.class end base_class_name = Tramway::Decorators::NameBuilder.default_decorator_class_name(klass) klass_name = namespace.present? ? "#{namespace.to_s.camelize}::#{base_class_name}" : base_class_name if klass_name.safe_constantize klass_name else raise NameError, "You should define #{klass_name} decorator class in app/decorators/ folder." end end |
.raise_error_if_object_empty(object_or_array, decorator) ⇒ Object
:reek:NilCheck { enabled: false }
43 44 45 46 47 48 49 |
# File 'lib/tramway/decorators/class_helper.rb', line 43 def raise_error_if_object_empty(object_or_array, decorator) return unless object_or_array.blank? && decorator.nil? text = 'You should pass object or array that is not empty OR provide a decorator class as a second argument' raise ArgumentError, text end |