Sha256: f4498db62f61f1872d5a3247fbd68e99177aeafb7734f0a4da3b0d18a70b952f

Contents?: true

Size: 740 Bytes

Versions: 21

Compression:

Stored size: 740 Bytes

Contents

class ResourcePresenter < Presenter
  def initialize(subject, options = {})
    @resource = options.delete(:resource)
    
    super(subject, options)
  end
  
  protected
  
  def resource
    @resource
  end
  
  def product
    if @resource && @resource.respond_to?(:product)
      @resource.product
    else
      nil
    end
  end
  
  def product_specific_presenter(klass_name)
    klass_name = klass_name.split('::')
    last_part = klass_name.pop
    klass_name = klass_name.map{|part| part.gsub('Presenter', '')}.join('::')
    klass = "#{product.class.name}::#{klass_name}::#{last_part}".constantize rescue nil if product

    (klass ? klass : "#{klass_name}::#{last_part}".constantize).new(subject, resource: @resource)
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
voluntary-0.7.1 app/presenters/resource_presenter.rb
voluntary-0.7.0 app/presenters/resource_presenter.rb
voluntary-0.6.0 app/presenters/resource_presenter.rb
voluntary-0.5.2 app/presenters/resource_presenter.rb
voluntary-0.5.1 app/presenters/resource_presenter.rb
voluntary-0.5.0 app/presenters/resource_presenter.rb
voluntary-0.4.0 app/presenters/resource_presenter.rb
voluntary-0.3.0 app/presenters/resource_presenter.rb
voluntary-0.2.4 app/presenters/resource_presenter.rb
voluntary-0.2.3 app/presenters/resource_presenter.rb
voluntary-0.2.2 app/presenters/resource_presenter.rb
voluntary-0.2.1 app/presenters/resource_presenter.rb
voluntary-0.2.0 app/presenters/resource_presenter.rb
voluntary-0.1.0 app/presenters/resource_presenter.rb
voluntary-0.1.0.rc4 app/presenters/resource_presenter.rb
voluntary-0.1.0.rc3 app/presenters/resource_presenter.rb
voluntary-0.1.0.rc2 app/presenters/resource_presenter.rb
voluntary-0.1.0.rc1 app/presenters/resource_presenter.rb
voluntary-0.0.3 app/presenters/resource_presenter.rb
voluntary-0.0.2 app/presenters/resource_presenter.rb