class Yarrow::Web::IndexDocument

Public Class Methods

new(collection, item=nil, is_index=false) click to toggle source

Represents the index document of a collection. This contains a reference to the individual items in the collection as well as any document content itself.

# File lib/yarrow/web/document.rb, line 80
def initialize(collection, item=nil, is_index=false)
  @collection = collection
  @item = item
  # The parent node of the collection is the first incoming node link
  @parent = collection.in(:collection).first
  @is_index = is_index

  template_map = collection.out_e(:child).to.all.inject([]) do |result, node|
    result << Document.new(node, false)
  end

  instance_variable_set("@children", template_map)
  define_singleton_method(:children){ template_map }

  if @item.nil?
    @resource = collection.props[:resource]
    @type = collection.props[:type]
    @node = collection
  else
    @resource = item.props[:resource]
    @type = item.props[:type]
    @node = item
  end

  instance_variable_set("@#{@type}", @resource)
  define_singleton_method(@type){ @resource }
end