Sha256: 663191df08ca5fd05e7683168cc4ac56b44d17a97a6c254bb289d564cd27986a

Contents?: true

Size: 598 Bytes

Versions: 5

Compression:

Stored size: 598 Bytes

Contents

module Nanoc
  class PageProxy

    def initialize(page)
      @page = page
    end

    def [](key)
      real_key = key.to_s.sub(/\?$/, '').to_sym

      if real_key == :content
        @page.content
      elsif real_key == :parent
        @page.parent.nil? ? nil : @page.parent.to_proxy
      elsif real_key == :children
        @page.children.map { |page| page.to_proxy }
      else
        @page.attribute_named(real_key)
      end
    end

    def []=(key, value)
      @page.attributes[key.to_sym] = value
    end

    def method_missing(method, *args)
      self[method]
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
nanoc-2.0 lib/nanoc/base/page_proxy.rb
nanoc-2.0.2 lib/nanoc/base/page_proxy.rb
nanoc-2.0.4 lib/nanoc/base/page_proxy.rb
nanoc-2.0.1 lib/nanoc/base/page_proxy.rb
nanoc-2.0.3 lib/nanoc/base/page_proxy.rb