| Class | RSS::Atom::Feed::Entry::Content |
| In: |
lib/rss/atom.rb
|
| Parent: | RSS::Element |
| xml | [W] |
# File lib/rss/atom.rb, line 491
491: def atom_validate(ignore_unknown_element, tags, uri)
492: if out_of_line?
493: raise MissingAttributeError.new(tag_name, "type") if @type.nil?
494: unless (content.nil? or content.empty?)
495: raise NotAvailableValueError.new(tag_name, content)
496: end
497: elsif inline_xhtml?
498: if @xml.nil?
499: raise MissingTagError.new("div", tag_name)
500: end
501: unless @xml.name == "div" and @xml.uri == XHTML_URI
502: raise NotExpectedTagError.new(@xml.name, @xml.uri, tag_name)
503: end
504: end
505: end
# File lib/rss/atom.rb, line 465
465: def have_xml_content?
466: inline_xhtml? or inline_other_xml?
467: end
# File lib/rss/atom.rb, line 511
511: def inline_html?
512: return false if out_of_line?
513: @type == "html" or mime_split == ["text", "html"]
514: end
# File lib/rss/atom.rb, line 520
520: def inline_other?
521: return false if out_of_line?
522: media_type, subtype = mime_split
523: return false if media_type.nil? or subtype.nil?
524: true
525: end
# File lib/rss/atom.rb, line 550
550: def inline_other_base64?
551: inline_other? and !inline_other_text? and !inline_other_xml?
552: end
# File lib/rss/atom.rb, line 527
527: def inline_other_text?
528: return false unless inline_other?
529: return false if inline_other_xml?
530:
531: media_type, subtype = mime_split
532: return true if "text" == media_type.downcase
533: false
534: end
# File lib/rss/atom.rb, line 536
536: def inline_other_xml?
537: return false unless inline_other?
538:
539: media_type, subtype = mime_split
540: normalized_mime_type = "#{media_type}/#{subtype}".downcase
541: if /(?:\+xml|^xml)$/ =~ subtype or
542: %w(text/xml-external-parsed-entity
543: application/xml-external-parsed-entity
544: application/xml-dtd).find {|x| x == normalized_mime_type}
545: return true
546: end
547: false
548: end
# File lib/rss/atom.rb, line 507
507: def inline_text?
508: !out_of_line? and [nil, "text", "html"].include?(@type)
509: end
# File lib/rss/atom.rb, line 516
516: def inline_xhtml?
517: !out_of_line? and @type == "xhtml"
518: end
# File lib/rss/atom.rb, line 558
558: def mime_split
559: media_type = subtype = nil
560: if /\A\s*([a-z]+)\/([a-z\+]+)\s*(?:;.*)?\z/i =~ @type.to_s
561: media_type = $1.downcase
562: subtype = $2.downcase
563: end
564: [media_type, subtype]
565: end
# File lib/rss/atom.rb, line 483
483: def xhtml
484: if inline_xhtml?
485: xml
486: else
487: nil
488: end
489: end
# File lib/rss/atom.rb, line 469
469: def xml
470: return @xml unless inline_xhtml?
471: return @xml if @xml.nil?
472: if @xml.is_a?(XML::Element) and
473: [@xml.name, @xml.uri] == ["div", XHTML_URI]
474: return @xml
475: end
476:
477: children = @xml
478: children = [children] unless children.is_a?(Array)
479: XML::Element.new("div", nil, XHTML_URI,
480: {"xmlns" => XHTML_URI}, children)
481: end