Sha256: 0679fd17385d233e4b04ed9e34252575bd6e837042ef1d882e57c3acec0efc24

Contents?: true

Size: 824 Bytes

Versions: 22

Compression:

Stored size: 824 Bytes

Contents

class Refinery::BasePresenter

  DEFAULT_FIELDS = {
    :title              => Proc.new { |p| (p.model.class.name.titleize if p.model.present?) },
    :path               => Proc.new { |p| p.title },
    :browser_title      => nil,
    :meta_description   => nil,
    :meta_keywords      => nil
  }

  attr_reader :model

  def initialize(obj)
    @model = obj
  end

  def method_missing(method, *args)
    if @model.respond_to? method
      @model.send method
    elsif DEFAULT_FIELDS.has_key? method
      (value = DEFAULT_FIELDS[method]).is_a?(Proc) ? value.call(self) : value
    else
      raise NoMethodError.new("#{self.class.name} doesn't know #{method}. Define or delegate it.", method)
    end
  end

  def respond_to?(method)
    super || @model.respond_to?(method) || DEFAULT_FIELDS.has_key?(method)
  end

end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
refinerycms-core-1.0.11 lib/refinery/base_presenter.rb
refinerycms-core-1.0.10 lib/refinery/base_presenter.rb
refinerycms-core-1.0.9 lib/refinery/base_presenter.rb
refinerycms-core-1.0.8 lib/refinery/base_presenter.rb
refinerycms-core-1.0.7 lib/refinery/base_presenter.rb
refinerycms-core-1.0.5 lib/refinery/base_presenter.rb
refinerycms-core-1.0.4 lib/refinery/base_presenter.rb
refinerycms-core-1.0.3 lib/refinery/base_presenter.rb
refinerycms-core-1.0.1 lib/refinery/base_presenter.rb
refinerycms-core-1.0.0 lib/refinery/base_presenter.rb
refinerycms-core-0.9.9.22 lib/refinery/base_presenter.rb
refinerycms-core-0.9.9.21 lib/refinery/base_presenter.rb
refinerycms-core-0.9.9.20 lib/refinery/base_presenter.rb
refinerycms-core-0.9.9.19 lib/refinery/base_presenter.rb
refinerycms-core-0.9.9.18 lib/refinery/base_presenter.rb
refinerycms-core-0.9.9.17 lib/refinery/base_presenter.rb
refinerycms-core-0.9.9.16 lib/refinery/base_presenter.rb
refinerycms-core-0.9.9.15 lib/refinery/base_presenter.rb
refinerycms-core-0.9.9.14 lib/refinery/base_presenter.rb
refinerycms-core-0.9.9.13 lib/refinery/base_presenter.rb