1 | require "rss/0.9"
|
---|
2 |
|
---|
3 | module 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 |
|
---|
111 | end
|
---|