class RSS::Atom::Feed::Entry::Content

包含或链接到Entry的内容。它具有以下属性

  • type

  • src

参考:validator.w3.org/feed/docs/rfc4287.html#element.content

属性

xml[W]

XML格式返回元素内容。

公共类方法

xml_getter() 点击切换源代码
# File rss-0.3.1/lib/rss/atom.rb, line 620
def xml_getter
  "xml"
end
xml_setter() 点击切换源代码
# File rss-0.3.1/lib/rss/atom.rb, line 616
def xml_setter
  "xml="
end

公共实例方法

atom_validate(ignore_unknown_element, tags, uri) 点击切换源代码

如果元素的格式不正确,则引发MissingAttributeErrorNotAvailableValueErrorMissingTagErrorNotExpectedTagError

# File rss-0.3.1/lib/rss/atom.rb, line 670
def atom_validate(ignore_unknown_element, tags, uri)
  if out_of_line?
    raise MissingAttributeError.new(tag_name, "type") if @type.nil?
    unless (content.nil? or content.empty?)
      raise NotAvailableValueError.new(tag_name, content)
    end
  elsif inline_xhtml?
    if @xml.nil?
      raise MissingTagError.new("div", tag_name)
    end
    unless @xml.name == "div" and @xml.uri == XHTML_URI
      raise NotExpectedTagError.new(@xml.name, @xml.uri, tag_name)
    end
  end
end
have_xml_content?() 点击切换源代码

如果元素具有内联的XML内容,则返回 true。

# File rss-0.3.1/lib/rss/atom.rb, line 639
def have_xml_content?
  inline_xhtml? or inline_other_xml?
end
inline_html?() 点击切换源代码

如果元素包含具有 HTML 媒体类型的内联内容,则返回 true。

# File rss-0.3.1/lib/rss/atom.rb, line 694
def inline_html?
  return false if out_of_line?
  @type == "html" or mime_split == ["text", "html"]
end
inline_other?() 点击切换源代码

如果元素包含具有 MIME 媒体类型的内联内容,则返回 true。

# File rss-0.3.1/lib/rss/atom.rb, line 707
def inline_other?
  return false if out_of_line?
  media_type, subtype = mime_split
  return false if media_type.nil? or subtype.nil?
  true
end
inline_other_base64?() 点击切换源代码

如果元素包含以 base64 编码的内联内容,则返回 true。

# File rss-0.3.1/lib/rss/atom.rb, line 743
def inline_other_base64?
  inline_other? and !inline_other_text? and !inline_other_xml?
end
inline_other_text?() 点击切换源代码

如果元素包含具有文本媒体类型的内联内容,则返回 true。

# File rss-0.3.1/lib/rss/atom.rb, line 716
def inline_other_text?
  return false unless inline_other?
  return false if inline_other_xml?

  media_type, = mime_split
  return true if "text" == media_type.downcase
  false
end
inline_other_xml?() 点击切换源代码

如果元素包含具有XML媒体类型的内联内容,则返回 true。

# File rss-0.3.1/lib/rss/atom.rb, line 727
def inline_other_xml?
  return false unless inline_other?

  media_type, subtype = mime_split
  normalized_mime_type = "#{media_type}/#{subtype}".downcase
  if /(?:\+xml|^xml)$/ =~ subtype or
      %w(text/xml-external-parsed-entity
         application/xml-external-parsed-entity
         application/xml-dtd).find {|x| x == normalized_mime_type}
    return true
  end
  false
end
inline_text?() 点击切换源代码

如果元素包含具有文本或 HTML 媒体类型或根本没有媒体类型的内联内容,则返回 true。

# File rss-0.3.1/lib/rss/atom.rb, line 688
def inline_text?
  !out_of_line? and [nil, "text", "html"].include?(@type)
end
inline_xhtml?() 点击切换源代码

如果元素包含具有 XHTML 媒体类型的内联内容,则返回 true。

# File rss-0.3.1/lib/rss/atom.rb, line 701
def inline_xhtml?
  !out_of_line? and @type == "xhtml"
end
mime_split() 点击切换源代码

将 type 属性拆分为一个数组,例如 [“text”, “xml”]

# File rss-0.3.1/lib/rss/atom.rb, line 753
def mime_split
  media_type = subtype = nil
  if /\A\s*([a-z]+)\/([a-z\+]+)\s*(?:;.*)?\z/i =~ @type.to_s
    media_type = $1.downcase
    subtype = $2.downcase
  end
  [media_type, subtype]
end
need_base64_encode?() 点击切换源代码

如果内容需要以 base64 编码,则返回 true。

# File rss-0.3.1/lib/rss/atom.rb, line 763
def need_base64_encode?
  inline_other_base64?
end
out_of_line?() 点击切换源代码

如果元素包含链接内容,则返回 true。

# File rss-0.3.1/lib/rss/atom.rb, line 748
def out_of_line?
  not @src.nil?
end
xhtml() 点击切换源代码

以 XHTML 格式返回元素内容。

# File rss-0.3.1/lib/rss/atom.rb, line 659
def xhtml
  if inline_xhtml?
    xml
  else
    nil
  end
end
xml() 点击切换源代码

XML格式返回或构建元素内容。

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

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

私有实例方法

empty_content?() 点击切换源代码
调用超类方法 RSS::Element#empty_content?
# File rss-0.3.1/lib/rss/atom.rb, line 768
def empty_content?
  out_of_line? or super
end