# 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