class StrongPresenter::Factory::Worker

@private

Attributes

object[R]
presenter_class[R]

Public Class Methods

new(presenter_class, object) click to toggle source
# File lib/strong_presenter/factory.rb, line 30
def initialize(presenter_class, object)
  @presenter_class = presenter_class
  @object = object
  @presenter_class = presenter_class::Collection if collection? && !presenter_class.nil? && (presenter_class < StrongPresenter::Presenter)
end

Public Instance Methods

call() { |presenter| ... } click to toggle source
# File lib/strong_presenter/factory.rb, line 36
def call
  presenter.new(object) { |presenter| yield presenter if block_given? }
end
presenter() click to toggle source
# File lib/strong_presenter/factory.rb, line 40
def presenter
  return presenter_class if presenter_class
  return object_presenter if object_presenter
  return StrongPresenter::CollectionPresenter if collection?
  raise StrongPresenter::UninferrablePresenterError.new(object.class)
end

Private Instance Methods

collection?() click to toggle source
# File lib/strong_presenter/factory.rb, line 61
def collection?
  object.is_a?(Enumerable) or is_a?("ActiveRecord::Associations::CollectionProxy") # or any other wrappers
end
get_object_presenter() click to toggle source
# File lib/strong_presenter/factory.rb, line 55
def get_object_presenter
  StrongPresenter::Presenter.inferred_presenter(object)
rescue NameError => error
  false
end
is_a?(klass) click to toggle source

Checks if object is an instance of klass, false in case klass does not exist.

# File lib/strong_presenter/factory.rb, line 66
def is_a? klass
  object.is_a? klass.constantize
rescue NameError
  false
end
object_presenter() click to toggle source
# File lib/strong_presenter/factory.rb, line 51
def object_presenter
  @object_presenter = @object_presenter.nil? ? get_object_presenter : @object_presenter
end