rubysl-rss 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.travis.yml +8 -0
- data/Gemfile +4 -0
- data/LICENSE +25 -0
- data/README.md +29 -0
- data/Rakefile +1 -0
- data/lib/rss.rb +1 -0
- data/lib/rss/0.9.rb +428 -0
- data/lib/rss/1.0.rb +452 -0
- data/lib/rss/2.0.rb +111 -0
- data/lib/rss/atom.rb +749 -0
- data/lib/rss/content.rb +31 -0
- data/lib/rss/content/1.0.rb +10 -0
- data/lib/rss/content/2.0.rb +12 -0
- data/lib/rss/converter.rb +162 -0
- data/lib/rss/dublincore.rb +161 -0
- data/lib/rss/dublincore/1.0.rb +13 -0
- data/lib/rss/dublincore/2.0.rb +13 -0
- data/lib/rss/dublincore/atom.rb +17 -0
- data/lib/rss/image.rb +193 -0
- data/lib/rss/itunes.rb +410 -0
- data/lib/rss/maker.rb +44 -0
- data/lib/rss/maker/0.9.rb +467 -0
- data/lib/rss/maker/1.0.rb +434 -0
- data/lib/rss/maker/2.0.rb +223 -0
- data/lib/rss/maker/atom.rb +172 -0
- data/lib/rss/maker/base.rb +868 -0
- data/lib/rss/maker/content.rb +21 -0
- data/lib/rss/maker/dublincore.rb +124 -0
- data/lib/rss/maker/entry.rb +163 -0
- data/lib/rss/maker/feed.rb +429 -0
- data/lib/rss/maker/image.rb +111 -0
- data/lib/rss/maker/itunes.rb +242 -0
- data/lib/rss/maker/slash.rb +33 -0
- data/lib/rss/maker/syndication.rb +18 -0
- data/lib/rss/maker/taxonomy.rb +118 -0
- data/lib/rss/maker/trackback.rb +61 -0
- data/lib/rss/parser.rb +541 -0
- data/lib/rss/rexmlparser.rb +54 -0
- data/lib/rss/rss.rb +1312 -0
- data/lib/rss/slash.rb +49 -0
- data/lib/rss/syndication.rb +67 -0
- data/lib/rss/taxonomy.rb +145 -0
- data/lib/rss/trackback.rb +288 -0
- data/lib/rss/utils.rb +111 -0
- data/lib/rss/xml-stylesheet.rb +105 -0
- data/lib/rss/xml.rb +71 -0
- data/lib/rss/xmlparser.rb +93 -0
- data/lib/rss/xmlscanner.rb +121 -0
- data/lib/rubysl/rss.rb +2 -0
- data/lib/rubysl/rss/rss.rb +19 -0
- data/lib/rubysl/rss/version.rb +5 -0
- data/rubysl-rss.gemspec +23 -0
- metadata +153 -0
data/lib/rss/slash.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'rss/1.0'
|
2
|
+
|
3
|
+
module RSS
|
4
|
+
SLASH_PREFIX = 'slash'
|
5
|
+
SLASH_URI = "http://purl.org/rss/1.0/modules/slash/"
|
6
|
+
|
7
|
+
RDF.install_ns(SLASH_PREFIX, SLASH_URI)
|
8
|
+
|
9
|
+
module SlashModel
|
10
|
+
extend BaseModel
|
11
|
+
|
12
|
+
ELEMENT_INFOS = \
|
13
|
+
[
|
14
|
+
["section"],
|
15
|
+
["department"],
|
16
|
+
["comments", :positive_integer],
|
17
|
+
["hit_parade", :csv_integer],
|
18
|
+
]
|
19
|
+
|
20
|
+
class << self
|
21
|
+
def append_features(klass)
|
22
|
+
super
|
23
|
+
|
24
|
+
return if klass.instance_of?(Module)
|
25
|
+
klass.install_must_call_validator(SLASH_PREFIX, SLASH_URI)
|
26
|
+
ELEMENT_INFOS.each do |name, type, *additional_infos|
|
27
|
+
full_name = "#{SLASH_PREFIX}_#{name}"
|
28
|
+
klass.install_text_element(full_name, SLASH_URI, "?",
|
29
|
+
full_name, type, name)
|
30
|
+
end
|
31
|
+
|
32
|
+
klass.module_eval do
|
33
|
+
alias_method(:slash_hit_parades, :slash_hit_parade)
|
34
|
+
undef_method(:slash_hit_parade)
|
35
|
+
alias_method(:slash_hit_parade, :slash_hit_parade_content)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
class RDF
|
42
|
+
class Item; include SlashModel; end
|
43
|
+
end
|
44
|
+
|
45
|
+
SlashModel::ELEMENT_INFOS.each do |name, type|
|
46
|
+
accessor_base = "#{SLASH_PREFIX}_#{name}"
|
47
|
+
BaseListener.install_get_text_element(SLASH_URI, name, accessor_base)
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require "rss/1.0"
|
2
|
+
|
3
|
+
module RSS
|
4
|
+
|
5
|
+
SY_PREFIX = 'sy'
|
6
|
+
SY_URI = "http://purl.org/rss/1.0/modules/syndication/"
|
7
|
+
|
8
|
+
RDF.install_ns(SY_PREFIX, SY_URI)
|
9
|
+
|
10
|
+
module SyndicationModel
|
11
|
+
|
12
|
+
extend BaseModel
|
13
|
+
|
14
|
+
ELEMENTS = []
|
15
|
+
|
16
|
+
def self.append_features(klass)
|
17
|
+
super
|
18
|
+
|
19
|
+
klass.install_must_call_validator(SY_PREFIX, SY_URI)
|
20
|
+
klass.module_eval do
|
21
|
+
[
|
22
|
+
["updatePeriod"],
|
23
|
+
["updateFrequency", :positive_integer]
|
24
|
+
].each do |name, type|
|
25
|
+
install_text_element(name, SY_URI, "?",
|
26
|
+
"#{SY_PREFIX}_#{name}", type,
|
27
|
+
"#{SY_PREFIX}:#{name}")
|
28
|
+
end
|
29
|
+
|
30
|
+
%w(updateBase).each do |name|
|
31
|
+
install_date_element(name, SY_URI, "?",
|
32
|
+
"#{SY_PREFIX}_#{name}", 'w3cdtf',
|
33
|
+
"#{SY_PREFIX}:#{name}")
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
klass.module_eval(<<-EOC, __FILE__, __LINE__ + 1)
|
38
|
+
alias_method(:_sy_updatePeriod=, :sy_updatePeriod=)
|
39
|
+
def sy_updatePeriod=(new_value)
|
40
|
+
new_value = new_value.strip
|
41
|
+
validate_sy_updatePeriod(new_value) if @do_validate
|
42
|
+
self._sy_updatePeriod = new_value
|
43
|
+
end
|
44
|
+
EOC
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
SY_UPDATEPERIOD_AVAILABLE_VALUES = %w(hourly daily weekly monthly yearly)
|
49
|
+
def validate_sy_updatePeriod(value)
|
50
|
+
unless SY_UPDATEPERIOD_AVAILABLE_VALUES.include?(value)
|
51
|
+
raise NotAvailableValueError.new("updatePeriod", value)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
class RDF
|
57
|
+
class Channel; include SyndicationModel; end
|
58
|
+
end
|
59
|
+
|
60
|
+
prefix_size = SY_PREFIX.size + 1
|
61
|
+
SyndicationModel::ELEMENTS.uniq!
|
62
|
+
SyndicationModel::ELEMENTS.each do |full_name|
|
63
|
+
name = full_name[prefix_size..-1]
|
64
|
+
BaseListener.install_get_text_element(SY_URI, name, full_name)
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
data/lib/rss/taxonomy.rb
ADDED
@@ -0,0 +1,145 @@
|
|
1
|
+
require "rss/1.0"
|
2
|
+
require "rss/dublincore"
|
3
|
+
|
4
|
+
module RSS
|
5
|
+
|
6
|
+
TAXO_PREFIX = "taxo"
|
7
|
+
TAXO_URI = "http://purl.org/rss/1.0/modules/taxonomy/"
|
8
|
+
|
9
|
+
RDF.install_ns(TAXO_PREFIX, TAXO_URI)
|
10
|
+
|
11
|
+
TAXO_ELEMENTS = []
|
12
|
+
|
13
|
+
%w(link).each do |name|
|
14
|
+
full_name = "#{TAXO_PREFIX}_#{name}"
|
15
|
+
BaseListener.install_get_text_element(TAXO_URI, name, full_name)
|
16
|
+
TAXO_ELEMENTS << "#{TAXO_PREFIX}_#{name}"
|
17
|
+
end
|
18
|
+
|
19
|
+
%w(topic topics).each do |name|
|
20
|
+
class_name = Utils.to_class_name(name)
|
21
|
+
BaseListener.install_class_name(TAXO_URI, name, "Taxonomy#{class_name}")
|
22
|
+
TAXO_ELEMENTS << "#{TAXO_PREFIX}_#{name}"
|
23
|
+
end
|
24
|
+
|
25
|
+
module TaxonomyTopicsModel
|
26
|
+
extend BaseModel
|
27
|
+
|
28
|
+
def self.append_features(klass)
|
29
|
+
super
|
30
|
+
|
31
|
+
klass.install_must_call_validator(TAXO_PREFIX, TAXO_URI)
|
32
|
+
%w(topics).each do |name|
|
33
|
+
klass.install_have_child_element(name, TAXO_URI, "?",
|
34
|
+
"#{TAXO_PREFIX}_#{name}")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
class TaxonomyTopics < Element
|
39
|
+
include RSS10
|
40
|
+
|
41
|
+
Bag = ::RSS::RDF::Bag
|
42
|
+
|
43
|
+
class << self
|
44
|
+
def required_prefix
|
45
|
+
TAXO_PREFIX
|
46
|
+
end
|
47
|
+
|
48
|
+
def required_uri
|
49
|
+
TAXO_URI
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
@tag_name = "topics"
|
54
|
+
|
55
|
+
install_have_child_element("Bag", RDF::URI, nil)
|
56
|
+
install_must_call_validator('rdf', RDF::URI)
|
57
|
+
|
58
|
+
def initialize(*args)
|
59
|
+
if Utils.element_initialize_arguments?(args)
|
60
|
+
super
|
61
|
+
else
|
62
|
+
super()
|
63
|
+
self.Bag = args[0]
|
64
|
+
end
|
65
|
+
self.Bag ||= Bag.new
|
66
|
+
end
|
67
|
+
|
68
|
+
def full_name
|
69
|
+
tag_name_with_prefix(TAXO_PREFIX)
|
70
|
+
end
|
71
|
+
|
72
|
+
def maker_target(target)
|
73
|
+
target.taxo_topics
|
74
|
+
end
|
75
|
+
|
76
|
+
def resources
|
77
|
+
if @Bag
|
78
|
+
@Bag.lis.collect do |li|
|
79
|
+
li.resource
|
80
|
+
end
|
81
|
+
else
|
82
|
+
[]
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
module TaxonomyTopicModel
|
89
|
+
extend BaseModel
|
90
|
+
|
91
|
+
def self.append_features(klass)
|
92
|
+
super
|
93
|
+
var_name = "#{TAXO_PREFIX}_topic"
|
94
|
+
klass.install_have_children_element("topic", TAXO_URI, "*", var_name)
|
95
|
+
end
|
96
|
+
|
97
|
+
class TaxonomyTopic < Element
|
98
|
+
include RSS10
|
99
|
+
|
100
|
+
include DublinCoreModel
|
101
|
+
include TaxonomyTopicsModel
|
102
|
+
|
103
|
+
class << self
|
104
|
+
def required_prefix
|
105
|
+
TAXO_PREFIX
|
106
|
+
end
|
107
|
+
|
108
|
+
def required_uri
|
109
|
+
TAXO_URI
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
@tag_name = "topic"
|
114
|
+
|
115
|
+
install_get_attribute("about", ::RSS::RDF::URI, true, nil, nil,
|
116
|
+
"#{RDF::PREFIX}:about")
|
117
|
+
install_text_element("link", TAXO_URI, "?", "#{TAXO_PREFIX}_link")
|
118
|
+
|
119
|
+
def initialize(*args)
|
120
|
+
if Utils.element_initialize_arguments?(args)
|
121
|
+
super
|
122
|
+
else
|
123
|
+
super()
|
124
|
+
self.about = args[0]
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def full_name
|
129
|
+
tag_name_with_prefix(TAXO_PREFIX)
|
130
|
+
end
|
131
|
+
|
132
|
+
def maker_target(target)
|
133
|
+
target.new_taxo_topic
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
class RDF
|
139
|
+
include TaxonomyTopicModel
|
140
|
+
class Channel
|
141
|
+
include TaxonomyTopicsModel
|
142
|
+
end
|
143
|
+
class Item; include TaxonomyTopicsModel; end
|
144
|
+
end
|
145
|
+
end
|
@@ -0,0 +1,288 @@
|
|
1
|
+
require 'rss/1.0'
|
2
|
+
require 'rss/2.0'
|
3
|
+
|
4
|
+
module RSS
|
5
|
+
|
6
|
+
TRACKBACK_PREFIX = 'trackback'
|
7
|
+
TRACKBACK_URI = 'http://madskills.com/public/xml/rss/module/trackback/'
|
8
|
+
|
9
|
+
RDF.install_ns(TRACKBACK_PREFIX, TRACKBACK_URI)
|
10
|
+
Rss.install_ns(TRACKBACK_PREFIX, TRACKBACK_URI)
|
11
|
+
|
12
|
+
module TrackBackUtils
|
13
|
+
private
|
14
|
+
def trackback_validate(ignore_unknown_element, tags, uri)
|
15
|
+
return if tags.nil?
|
16
|
+
if tags.find {|tag| tag == "about"} and
|
17
|
+
!tags.find {|tag| tag == "ping"}
|
18
|
+
raise MissingTagError.new("#{TRACKBACK_PREFIX}:ping", tag_name)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
module BaseTrackBackModel
|
24
|
+
|
25
|
+
ELEMENTS = %w(ping about)
|
26
|
+
|
27
|
+
def append_features(klass)
|
28
|
+
super
|
29
|
+
|
30
|
+
unless klass.class == Module
|
31
|
+
klass.module_eval {include TrackBackUtils}
|
32
|
+
|
33
|
+
klass.install_must_call_validator(TRACKBACK_PREFIX, TRACKBACK_URI)
|
34
|
+
%w(ping).each do |name|
|
35
|
+
var_name = "#{TRACKBACK_PREFIX}_#{name}"
|
36
|
+
klass_name = "TrackBack#{Utils.to_class_name(name)}"
|
37
|
+
klass.install_have_child_element(name, TRACKBACK_URI, "?", var_name)
|
38
|
+
klass.module_eval(<<-EOC, __FILE__, __LINE__)
|
39
|
+
remove_method :#{var_name}
|
40
|
+
def #{var_name}
|
41
|
+
@#{var_name} and @#{var_name}.value
|
42
|
+
end
|
43
|
+
|
44
|
+
remove_method :#{var_name}=
|
45
|
+
def #{var_name}=(value)
|
46
|
+
@#{var_name} = Utils.new_with_value_if_need(#{klass_name}, value)
|
47
|
+
end
|
48
|
+
EOC
|
49
|
+
end
|
50
|
+
|
51
|
+
[%w(about s)].each do |name, postfix|
|
52
|
+
var_name = "#{TRACKBACK_PREFIX}_#{name}"
|
53
|
+
klass_name = "TrackBack#{Utils.to_class_name(name)}"
|
54
|
+
klass.install_have_children_element(name, TRACKBACK_URI, "*",
|
55
|
+
var_name)
|
56
|
+
klass.module_eval(<<-EOC, __FILE__, __LINE__)
|
57
|
+
remove_method :#{var_name}
|
58
|
+
def #{var_name}(*args)
|
59
|
+
if args.empty?
|
60
|
+
@#{var_name}.first and @#{var_name}.first.value
|
61
|
+
else
|
62
|
+
ret = @#{var_name}.__send__("[]", *args)
|
63
|
+
if ret.is_a?(Array)
|
64
|
+
ret.collect {|x| x.value}
|
65
|
+
else
|
66
|
+
ret.value
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
remove_method :#{var_name}=
|
72
|
+
remove_method :set_#{var_name}
|
73
|
+
def #{var_name}=(*args)
|
74
|
+
if args.size == 1
|
75
|
+
item = Utils.new_with_value_if_need(#{klass_name}, args[0])
|
76
|
+
@#{var_name}.push(item)
|
77
|
+
else
|
78
|
+
new_val = args.last
|
79
|
+
if new_val.is_a?(Array)
|
80
|
+
new_val = new_value.collect do |val|
|
81
|
+
Utils.new_with_value_if_need(#{klass_name}, val)
|
82
|
+
end
|
83
|
+
else
|
84
|
+
new_val = Utils.new_with_value_if_need(#{klass_name}, new_val)
|
85
|
+
end
|
86
|
+
@#{var_name}.__send__("[]=", *(args[0..-2] + [new_val]))
|
87
|
+
end
|
88
|
+
end
|
89
|
+
alias set_#{var_name} #{var_name}=
|
90
|
+
EOC
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
module TrackBackModel10
|
97
|
+
extend BaseModel
|
98
|
+
extend BaseTrackBackModel
|
99
|
+
|
100
|
+
class TrackBackPing < Element
|
101
|
+
include RSS10
|
102
|
+
|
103
|
+
class << self
|
104
|
+
|
105
|
+
def required_prefix
|
106
|
+
TRACKBACK_PREFIX
|
107
|
+
end
|
108
|
+
|
109
|
+
def required_uri
|
110
|
+
TRACKBACK_URI
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
@tag_name = "ping"
|
116
|
+
|
117
|
+
[
|
118
|
+
["resource", ::RSS::RDF::URI, true]
|
119
|
+
].each do |name, uri, required|
|
120
|
+
install_get_attribute(name, uri, required, nil, nil,
|
121
|
+
"#{::RSS::RDF::PREFIX}:#{name}")
|
122
|
+
end
|
123
|
+
|
124
|
+
alias_method(:value, :resource)
|
125
|
+
alias_method(:value=, :resource=)
|
126
|
+
def initialize(*args)
|
127
|
+
if Utils.element_initialize_arguments?(args)
|
128
|
+
super
|
129
|
+
else
|
130
|
+
super()
|
131
|
+
self.resource = args[0]
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def full_name
|
136
|
+
tag_name_with_prefix(TRACKBACK_PREFIX)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
class TrackBackAbout < Element
|
141
|
+
include RSS10
|
142
|
+
|
143
|
+
class << self
|
144
|
+
|
145
|
+
def required_prefix
|
146
|
+
TRACKBACK_PREFIX
|
147
|
+
end
|
148
|
+
|
149
|
+
def required_uri
|
150
|
+
TRACKBACK_URI
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
@tag_name = "about"
|
156
|
+
|
157
|
+
[
|
158
|
+
["resource", ::RSS::RDF::URI, true]
|
159
|
+
].each do |name, uri, required|
|
160
|
+
install_get_attribute(name, uri, required, nil, nil,
|
161
|
+
"#{::RSS::RDF::PREFIX}:#{name}")
|
162
|
+
end
|
163
|
+
|
164
|
+
alias_method(:value, :resource)
|
165
|
+
alias_method(:value=, :resource=)
|
166
|
+
|
167
|
+
def initialize(*args)
|
168
|
+
if Utils.element_initialize_arguments?(args)
|
169
|
+
super
|
170
|
+
else
|
171
|
+
super()
|
172
|
+
self.resource = args[0]
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
def full_name
|
177
|
+
tag_name_with_prefix(TRACKBACK_PREFIX)
|
178
|
+
end
|
179
|
+
|
180
|
+
private
|
181
|
+
def maker_target(abouts)
|
182
|
+
abouts.new_about
|
183
|
+
end
|
184
|
+
|
185
|
+
def setup_maker_attributes(about)
|
186
|
+
about.resource = self.resource
|
187
|
+
end
|
188
|
+
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
module TrackBackModel20
|
193
|
+
extend BaseModel
|
194
|
+
extend BaseTrackBackModel
|
195
|
+
|
196
|
+
class TrackBackPing < Element
|
197
|
+
include RSS09
|
198
|
+
|
199
|
+
@tag_name = "ping"
|
200
|
+
|
201
|
+
content_setup
|
202
|
+
|
203
|
+
class << self
|
204
|
+
|
205
|
+
def required_prefix
|
206
|
+
TRACKBACK_PREFIX
|
207
|
+
end
|
208
|
+
|
209
|
+
def required_uri
|
210
|
+
TRACKBACK_URI
|
211
|
+
end
|
212
|
+
|
213
|
+
end
|
214
|
+
|
215
|
+
alias_method(:value, :content)
|
216
|
+
alias_method(:value=, :content=)
|
217
|
+
|
218
|
+
def initialize(*args)
|
219
|
+
if Utils.element_initialize_arguments?(args)
|
220
|
+
super
|
221
|
+
else
|
222
|
+
super()
|
223
|
+
self.content = args[0]
|
224
|
+
end
|
225
|
+
end
|
226
|
+
|
227
|
+
def full_name
|
228
|
+
tag_name_with_prefix(TRACKBACK_PREFIX)
|
229
|
+
end
|
230
|
+
|
231
|
+
end
|
232
|
+
|
233
|
+
class TrackBackAbout < Element
|
234
|
+
include RSS09
|
235
|
+
|
236
|
+
@tag_name = "about"
|
237
|
+
|
238
|
+
content_setup
|
239
|
+
|
240
|
+
class << self
|
241
|
+
|
242
|
+
def required_prefix
|
243
|
+
TRACKBACK_PREFIX
|
244
|
+
end
|
245
|
+
|
246
|
+
def required_uri
|
247
|
+
TRACKBACK_URI
|
248
|
+
end
|
249
|
+
|
250
|
+
end
|
251
|
+
|
252
|
+
alias_method(:value, :content)
|
253
|
+
alias_method(:value=, :content=)
|
254
|
+
|
255
|
+
def initialize(*args)
|
256
|
+
if Utils.element_initialize_arguments?(args)
|
257
|
+
super
|
258
|
+
else
|
259
|
+
super()
|
260
|
+
self.content = args[0]
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
def full_name
|
265
|
+
tag_name_with_prefix(TRACKBACK_PREFIX)
|
266
|
+
end
|
267
|
+
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
271
|
+
class RDF
|
272
|
+
class Item; include TrackBackModel10; end
|
273
|
+
end
|
274
|
+
|
275
|
+
class Rss
|
276
|
+
class Channel
|
277
|
+
class Item; include TrackBackModel20; end
|
278
|
+
end
|
279
|
+
end
|
280
|
+
|
281
|
+
BaseTrackBackModel::ELEMENTS.each do |name|
|
282
|
+
class_name = Utils.to_class_name(name)
|
283
|
+
BaseListener.install_class_name(TRACKBACK_URI, name,
|
284
|
+
"TrackBack#{class_name}")
|
285
|
+
end
|
286
|
+
|
287
|
+
BaseTrackBackModel::ELEMENTS.collect! {|name| "#{TRACKBACK_PREFIX}_#{name}"}
|
288
|
+
end
|