123456789_123456789_123456789_123456789_123456789_

Class: ActionView::Helpers::AtomFeedHelper::AtomFeedBuilder

Do not use. This class is for internal use only.
Relationships & Source Files
Super Chains via Extension / Inclusion / Inheritance
Class Chain:
self, AtomBuilder
Instance Chain:
self, AtomBuilder
Inherits: ActionView::Helpers::AtomFeedHelper::AtomBuilder
Defined in: actionview/lib/action_view/helpers/atom_feed_helper.rb

Constant Summary

AtomBuilder - Inherited

XHTML_TAG_NAMES

Class Method Summary

Instance Method Summary

AtomBuilder - Inherited

#method_missing

Delegate to XML Builder, first wrapping the element in an XHTML namespaced div element if the method and arguments indicate that an xhtml_block? is desired.

#xhtml_block?

True if the method name matches one of the five elements defined in the Atom spec as potentially containing XHTML content and if type: ‘xhtml’ is, in fact, specified.

Constructor Details

.new(xml, view, feed_options = {}) ⇒ AtomFeedBuilder

[ GitHub ]

  
# File 'actionview/lib/action_view/helpers/atom_feed_helper.rb', line 164

def initialize(xml, view, feed_options = {})
  @xml, @view, @feed_options = xml, view, feed_options
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class ActionView::Helpers::AtomFeedHelper::AtomBuilder

Instance Method Details

#entry(record, options = {})

Creates an entry tag for a specific record and prefills the id using class and id.

Options:

  • :published: ::Time first published. Defaults to the created_at attribute on the record if one such exists.

  • :updated: ::Time of update. Defaults to the updated_at attribute on the record if one such exists.

  • :url: The URL for this entry or false or nil for not having a link tag. Defaults to the polymorphic_url for the record.

  • :id: The ID for this entry. Defaults to “tag:#@view.request.host,#href=":schema_date">feed_options:#record.class/#record.id

  • :type: The TYPE for this entry. Defaults to “text/html”.

[ GitHub ]

  
# File 'actionview/lib/action_view/helpers/atom_feed_helper.rb', line 182

def entry(record, options = {})
  @xml.entry do
    @xml.id(options[:id] || "tag:#{@view.request.host},#{@feed_options[:schema_date]}:#{record.class}/#{record.id}")

    if options[:published] || (record.respond_to?(:created_at) && record.created_at)
      @xml.published((options[:published] || record.created_at).xmlschema)
    end

    if options[:updated] || (record.respond_to?(:updated_at) && record.updated_at)
      @xml.updated((options[:updated] || record.updated_at).xmlschema)
    end

    type = options.fetch(:type, "text/html")

    url = options.fetch(:url) { @view.polymorphic_url(record) }
    @xml.link(rel: "alternate", type: type, href: url) if url

    yield AtomBuilder.new(@xml)
  end
end

#updated(date_or_time = nil)

Accepts a ::Date or ::Time object and inserts it in the proper format. If nil is passed, current time in UTC is used.

[ GitHub ]

  
# File 'actionview/lib/action_view/helpers/atom_feed_helper.rb', line 169

def updated(date_or_time = nil)
  @xml.updated((date_or_time || Time.now.utc).xmlschema)
end