module RSS::Atom::TextConstruct

The TextConstruct module is used to define a Text construct Atom element, which is used to store small quantities of human-readable text.

The TextConstruct has a type attribute, e.g. text, html, xhtml

Reference: validator.w3.org/feed/docs/rfc4287.html#text.constructs

Attributes

xhtml[W]

Public Class Methods

append_features(klass) click to toggle source
Calls superclass method
# File lib/rss/atom.rb, line 103
def self.append_features(klass)
  super
  klass.class_eval do
    [
     ["type", ""],
    ].each do |name, uri, required|
      install_get_attribute(name, uri, required, :text_type)
    end

    content_setup
    add_need_initialize_variable("xhtml")

    class << self
      def xml_getter
        "xhtml"
      end

      def xml_setter
        "xhtml="
      end
    end
  end
end
xml_getter() click to toggle source
# File lib/rss/atom.rb, line 116
def xml_getter
  "xhtml"
end
xml_setter() click to toggle source
# File lib/rss/atom.rb, line 120
def xml_setter
  "xhtml="
end

Public Instance Methods

atom_validate(ignore_unknown_element, tags, uri) click to toggle source

Raises a MissingTagError or NotExpectedTagError if the element is not properly formatted.

# File lib/rss/atom.rb, line 150
def atom_validate(ignore_unknown_element, tags, uri)
  if have_xml_content?
    if @xhtml.nil?
      raise MissingTagError.new("div", tag_name)
    end
    unless [@xhtml.name, @xhtml.uri] == ["div", XHTML_URI]
      raise NotExpectedTagError.new(@xhtml.name, @xhtml.uri, tag_name)
    end
  end
end
have_xml_content?() click to toggle source

Returns true if type is “xhtml”.

# File lib/rss/atom.rb, line 144
def have_xml_content?
  @type == "xhtml"
end
xhtml() click to toggle source

Returns or builds the XHTML content.

# File lib/rss/atom.rb, line 130
def xhtml
  return @xhtml if @xhtml.nil?
  if @xhtml.is_a?(XML::Element) and
      [@xhtml.name, @xhtml.uri] == ["div", XHTML_URI]
    return @xhtml
  end

  children = @xhtml
  children = [children] unless children.is_a?(Array)
  XML::Element.new("div", nil, XHTML_URI,
                   {"xmlns" => XHTML_URI}, children)
end

Private Instance Methods

maker_target(target) click to toggle source
# File lib/rss/atom.rb, line 162
def maker_target(target)
  target.__send__(self.class.name.split(/::/).last.downcase) {|x| x}
end
setup_maker_attributes(target) click to toggle source
# File lib/rss/atom.rb, line 166
def setup_maker_attributes(target)
  target.type = type
  target.content = content
  target.xml_content = @xhtml
end