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