1require "rss/0.9" 2 3module RSS 4 5 class Rss 6 7 class Channel 8 9 [ 10 ["generator"], 11 ["ttl", :integer], 12 ].each do |name, type| 13 install_text_element(name, "", "?", name, type) 14 end 15 16 [ 17 %w(category categories), 18 ].each do |name, plural_name| 19 install_have_children_element(name, "", "*", name, plural_name) 20 end 21 22 [ 23 ["image", "?"], 24 ["language", "?"], 25 ].each do |name, occurs| 26 install_model(name, "", occurs) 27 end 28 29 Category = Item::Category 30 31 class Item 32 33 [ 34 ["comments", "?"], 35 ["author", "?"], 36 ].each do |name, occurs| 37 install_text_element(name, "", occurs) 38 end 39 40 [ 41 ["pubDate", '?'], 42 ].each do |name, occurs| 43 install_date_element(name, "", occurs, name, 'rfc822') 44 end 45 alias date pubDate 46 alias date= pubDate= 47 48 [ 49 ["guid", '?'], 50 ].each do |name, occurs| 51 install_have_child_element(name, "", occurs) 52 end 53 54 private 55 alias _setup_maker_element setup_maker_element 56 def setup_maker_element(item) 57 _setup_maker_element(item) 58 @guid.setup_maker(item) if @guid 59 end 60 61 class Guid < Element 62 63 include RSS09 64 65 [ 66 ["isPermaLink", "", false, :boolean] 67 ].each do |name, uri, required, type| 68 install_get_attribute(name, uri, required, type) 69 end 70 71 content_setup 72 73 def initialize(*args) 74 if Utils.element_initialize_arguments?(args) 75 super 76 else 77 super() 78 self.isPermaLink = args[0] 79 self.content = args[1] 80 end 81 end 82 83 alias_method :_PermaLink?, :PermaLink? 84 private :_PermaLink? 85 def PermaLink? 86 perma = _PermaLink? 87 perma or perma.nil? 88 end 89 90 private 91 def maker_target(item) 92 item.guid 93 end 94 95 def setup_maker_attributes(guid) 96 guid.isPermaLink = isPermaLink 97 guid.content = content 98 end 99 end 100 101 end 102 103 end 104 105 end 106 107 RSS09::ELEMENTS.each do |name| 108 BaseListener.install_get_text_element("", name, name) 109 end 110 111end 112