rubysl-rss 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.travis.yml +8 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE +25 -0
  6. data/README.md +29 -0
  7. data/Rakefile +1 -0
  8. data/lib/rss.rb +1 -0
  9. data/lib/rss/0.9.rb +428 -0
  10. data/lib/rss/1.0.rb +452 -0
  11. data/lib/rss/2.0.rb +111 -0
  12. data/lib/rss/atom.rb +749 -0
  13. data/lib/rss/content.rb +31 -0
  14. data/lib/rss/content/1.0.rb +10 -0
  15. data/lib/rss/content/2.0.rb +12 -0
  16. data/lib/rss/converter.rb +162 -0
  17. data/lib/rss/dublincore.rb +161 -0
  18. data/lib/rss/dublincore/1.0.rb +13 -0
  19. data/lib/rss/dublincore/2.0.rb +13 -0
  20. data/lib/rss/dublincore/atom.rb +17 -0
  21. data/lib/rss/image.rb +193 -0
  22. data/lib/rss/itunes.rb +410 -0
  23. data/lib/rss/maker.rb +44 -0
  24. data/lib/rss/maker/0.9.rb +467 -0
  25. data/lib/rss/maker/1.0.rb +434 -0
  26. data/lib/rss/maker/2.0.rb +223 -0
  27. data/lib/rss/maker/atom.rb +172 -0
  28. data/lib/rss/maker/base.rb +868 -0
  29. data/lib/rss/maker/content.rb +21 -0
  30. data/lib/rss/maker/dublincore.rb +124 -0
  31. data/lib/rss/maker/entry.rb +163 -0
  32. data/lib/rss/maker/feed.rb +429 -0
  33. data/lib/rss/maker/image.rb +111 -0
  34. data/lib/rss/maker/itunes.rb +242 -0
  35. data/lib/rss/maker/slash.rb +33 -0
  36. data/lib/rss/maker/syndication.rb +18 -0
  37. data/lib/rss/maker/taxonomy.rb +118 -0
  38. data/lib/rss/maker/trackback.rb +61 -0
  39. data/lib/rss/parser.rb +541 -0
  40. data/lib/rss/rexmlparser.rb +54 -0
  41. data/lib/rss/rss.rb +1312 -0
  42. data/lib/rss/slash.rb +49 -0
  43. data/lib/rss/syndication.rb +67 -0
  44. data/lib/rss/taxonomy.rb +145 -0
  45. data/lib/rss/trackback.rb +288 -0
  46. data/lib/rss/utils.rb +111 -0
  47. data/lib/rss/xml-stylesheet.rb +105 -0
  48. data/lib/rss/xml.rb +71 -0
  49. data/lib/rss/xmlparser.rb +93 -0
  50. data/lib/rss/xmlscanner.rb +121 -0
  51. data/lib/rubysl/rss.rb +2 -0
  52. data/lib/rubysl/rss/rss.rb +19 -0
  53. data/lib/rubysl/rss/version.rb +5 -0
  54. data/rubysl-rss.gemspec +23 -0
  55. metadata +153 -0
@@ -0,0 +1,467 @@
1
+ require "rss/0.9"
2
+
3
+ require "rss/maker/base"
4
+
5
+ module RSS
6
+ module Maker
7
+
8
+ class RSS09 < RSSBase
9
+
10
+ def initialize(feed_version="0.92")
11
+ super
12
+ @feed_type = "rss"
13
+ end
14
+
15
+ private
16
+ def make_feed
17
+ Rss.new(@feed_version, @version, @encoding, @standalone)
18
+ end
19
+
20
+ def setup_elements(rss)
21
+ setup_channel(rss)
22
+ end
23
+
24
+ class Channel < ChannelBase
25
+ def to_feed(rss)
26
+ channel = Rss::Channel.new
27
+ set = setup_values(channel)
28
+ _not_set_required_variables = not_set_required_variables
29
+ if _not_set_required_variables.empty?
30
+ rss.channel = channel
31
+ set_parent(channel, rss)
32
+ setup_items(rss)
33
+ setup_image(rss)
34
+ setup_textinput(rss)
35
+ setup_other_elements(rss, channel)
36
+ rss
37
+ else
38
+ raise NotSetError.new("maker.channel", _not_set_required_variables)
39
+ end
40
+ end
41
+
42
+ private
43
+ def setup_items(rss)
44
+ @maker.items.to_feed(rss)
45
+ end
46
+
47
+ def setup_image(rss)
48
+ @maker.image.to_feed(rss)
49
+ end
50
+
51
+ def setup_textinput(rss)
52
+ @maker.textinput.to_feed(rss)
53
+ end
54
+
55
+ def variables
56
+ super + ["pubDate"]
57
+ end
58
+
59
+ def required_variable_names
60
+ %w(link language)
61
+ end
62
+
63
+ def not_set_required_variables
64
+ vars = super
65
+ vars << "description" unless description {|d| d.have_required_values?}
66
+ vars << "title" unless title {|t| t.have_required_values?}
67
+ vars
68
+ end
69
+
70
+ class SkipDays < SkipDaysBase
71
+ def to_feed(rss, channel)
72
+ unless @days.empty?
73
+ skipDays = Rss::Channel::SkipDays.new
74
+ channel.skipDays = skipDays
75
+ set_parent(skipDays, channel)
76
+ @days.each do |day|
77
+ day.to_feed(rss, skipDays.days)
78
+ end
79
+ end
80
+ end
81
+
82
+ class Day < DayBase
83
+ def to_feed(rss, days)
84
+ day = Rss::Channel::SkipDays::Day.new
85
+ set = setup_values(day)
86
+ if set
87
+ days << day
88
+ set_parent(day, days)
89
+ setup_other_elements(rss, day)
90
+ end
91
+ end
92
+
93
+ private
94
+ def required_variable_names
95
+ %w(content)
96
+ end
97
+ end
98
+ end
99
+
100
+ class SkipHours < SkipHoursBase
101
+ def to_feed(rss, channel)
102
+ unless @hours.empty?
103
+ skipHours = Rss::Channel::SkipHours.new
104
+ channel.skipHours = skipHours
105
+ set_parent(skipHours, channel)
106
+ @hours.each do |hour|
107
+ hour.to_feed(rss, skipHours.hours)
108
+ end
109
+ end
110
+ end
111
+
112
+ class Hour < HourBase
113
+ def to_feed(rss, hours)
114
+ hour = Rss::Channel::SkipHours::Hour.new
115
+ set = setup_values(hour)
116
+ if set
117
+ hours << hour
118
+ set_parent(hour, hours)
119
+ setup_other_elements(rss, hour)
120
+ end
121
+ end
122
+
123
+ private
124
+ def required_variable_names
125
+ %w(content)
126
+ end
127
+ end
128
+ end
129
+
130
+ class Cloud < CloudBase
131
+ def to_feed(*args)
132
+ end
133
+ end
134
+
135
+ class Categories < CategoriesBase
136
+ def to_feed(*args)
137
+ end
138
+
139
+ class Category < CategoryBase
140
+ end
141
+ end
142
+
143
+ class Links < LinksBase
144
+ def to_feed(rss, channel)
145
+ return if @links.empty?
146
+ @links.first.to_feed(rss, channel)
147
+ end
148
+
149
+ class Link < LinkBase
150
+ def to_feed(rss, channel)
151
+ if have_required_values?
152
+ channel.link = href
153
+ else
154
+ raise NotSetError.new("maker.channel.link",
155
+ not_set_required_variables)
156
+ end
157
+ end
158
+
159
+ private
160
+ def required_variable_names
161
+ %w(href)
162
+ end
163
+ end
164
+ end
165
+
166
+ class Authors < AuthorsBase
167
+ def to_feed(rss, channel)
168
+ end
169
+
170
+ class Author < AuthorBase
171
+ def to_feed(rss, channel)
172
+ end
173
+ end
174
+ end
175
+
176
+ class Contributors < ContributorsBase
177
+ def to_feed(rss, channel)
178
+ end
179
+
180
+ class Contributor < ContributorBase
181
+ end
182
+ end
183
+
184
+ class Generator < GeneratorBase
185
+ def to_feed(rss, channel)
186
+ end
187
+ end
188
+
189
+ class Copyright < CopyrightBase
190
+ def to_feed(rss, channel)
191
+ channel.copyright = content if have_required_values?
192
+ end
193
+
194
+ private
195
+ def required_variable_names
196
+ %w(content)
197
+ end
198
+ end
199
+
200
+ class Description < DescriptionBase
201
+ def to_feed(rss, channel)
202
+ channel.description = content if have_required_values?
203
+ end
204
+
205
+ private
206
+ def required_variable_names
207
+ %w(content)
208
+ end
209
+ end
210
+
211
+ class Title < TitleBase
212
+ def to_feed(rss, channel)
213
+ channel.title = content if have_required_values?
214
+ end
215
+
216
+ private
217
+ def required_variable_names
218
+ %w(content)
219
+ end
220
+ end
221
+ end
222
+
223
+ class Image < ImageBase
224
+ def to_feed(rss)
225
+ image = Rss::Channel::Image.new
226
+ set = setup_values(image)
227
+ if set
228
+ image.link = link
229
+ rss.channel.image = image
230
+ set_parent(image, rss.channel)
231
+ setup_other_elements(rss, image)
232
+ elsif required_element?
233
+ raise NotSetError.new("maker.image", not_set_required_variables)
234
+ end
235
+ end
236
+
237
+ private
238
+ def required_variable_names
239
+ %w(url title link)
240
+ end
241
+
242
+ def required_element?
243
+ true
244
+ end
245
+ end
246
+
247
+ class Items < ItemsBase
248
+ def to_feed(rss)
249
+ if rss.channel
250
+ normalize.each do |item|
251
+ item.to_feed(rss)
252
+ end
253
+ setup_other_elements(rss, rss.items)
254
+ end
255
+ end
256
+
257
+ class Item < ItemBase
258
+ def to_feed(rss)
259
+ item = Rss::Channel::Item.new
260
+ set = setup_values(item)
261
+ _not_set_required_variables = not_set_required_variables
262
+ if _not_set_required_variables.empty?
263
+ rss.items << item
264
+ set_parent(item, rss.channel)
265
+ setup_other_elements(rss, item)
266
+ elsif variable_is_set?
267
+ raise NotSetError.new("maker.items", _not_set_required_variables)
268
+ end
269
+ end
270
+
271
+ private
272
+ def required_variable_names
273
+ []
274
+ end
275
+
276
+ def not_set_required_variables
277
+ vars = super
278
+ if @maker.feed_version == "0.91"
279
+ vars << "title" unless title {|t| t.have_required_values?}
280
+ vars << "link" unless link {|l| l.have_required_values?}
281
+ end
282
+ vars
283
+ end
284
+
285
+ class Guid < GuidBase
286
+ def to_feed(*args)
287
+ end
288
+ end
289
+
290
+ class Enclosure < EnclosureBase
291
+ def to_feed(*args)
292
+ end
293
+ end
294
+
295
+ class Source < SourceBase
296
+ def to_feed(*args)
297
+ end
298
+
299
+ class Authors < AuthorsBase
300
+ def to_feed(*args)
301
+ end
302
+
303
+ class Author < AuthorBase
304
+ end
305
+ end
306
+
307
+ class Categories < CategoriesBase
308
+ def to_feed(*args)
309
+ end
310
+
311
+ class Category < CategoryBase
312
+ end
313
+ end
314
+
315
+ class Contributors < ContributorsBase
316
+ def to_feed(*args)
317
+ end
318
+
319
+ class Contributor < ContributorBase
320
+ end
321
+ end
322
+
323
+ class Generator < GeneratorBase
324
+ def to_feed(*args)
325
+ end
326
+ end
327
+
328
+ class Icon < IconBase
329
+ def to_feed(*args)
330
+ end
331
+ end
332
+
333
+ class Links < LinksBase
334
+ def to_feed(*args)
335
+ end
336
+
337
+ class Link < LinkBase
338
+ end
339
+ end
340
+
341
+ class Logo < LogoBase
342
+ def to_feed(*args)
343
+ end
344
+ end
345
+
346
+ class Rights < RightsBase
347
+ def to_feed(*args)
348
+ end
349
+ end
350
+
351
+ class Subtitle < SubtitleBase
352
+ def to_feed(*args)
353
+ end
354
+ end
355
+
356
+ class Title < TitleBase
357
+ def to_feed(*args)
358
+ end
359
+ end
360
+ end
361
+
362
+ class Categories < CategoriesBase
363
+ def to_feed(*args)
364
+ end
365
+
366
+ class Category < CategoryBase
367
+ end
368
+ end
369
+
370
+ class Authors < AuthorsBase
371
+ def to_feed(*args)
372
+ end
373
+
374
+ class Author < AuthorBase
375
+ end
376
+ end
377
+
378
+ class Links < LinksBase
379
+ def to_feed(rss, item)
380
+ return if @links.empty?
381
+ @links.first.to_feed(rss, item)
382
+ end
383
+
384
+ class Link < LinkBase
385
+ def to_feed(rss, item)
386
+ if have_required_values?
387
+ item.link = href
388
+ else
389
+ raise NotSetError.new("maker.link",
390
+ not_set_required_variables)
391
+ end
392
+ end
393
+
394
+ private
395
+ def required_variable_names
396
+ %w(href)
397
+ end
398
+ end
399
+ end
400
+
401
+ class Contributors < ContributorsBase
402
+ def to_feed(rss, item)
403
+ end
404
+
405
+ class Contributor < ContributorBase
406
+ end
407
+ end
408
+
409
+ class Rights < RightsBase
410
+ def to_feed(rss, item)
411
+ end
412
+ end
413
+
414
+ class Description < DescriptionBase
415
+ def to_feed(rss, item)
416
+ item.description = content if have_required_values?
417
+ end
418
+
419
+ private
420
+ def required_variable_names
421
+ %w(content)
422
+ end
423
+ end
424
+
425
+ class Content < ContentBase
426
+ def to_feed(rss, item)
427
+ end
428
+ end
429
+
430
+ class Title < TitleBase
431
+ def to_feed(rss, item)
432
+ item.title = content if have_required_values?
433
+ end
434
+
435
+ private
436
+ def required_variable_names
437
+ %w(content)
438
+ end
439
+ end
440
+ end
441
+ end
442
+
443
+ class Textinput < TextinputBase
444
+ def to_feed(rss)
445
+ textInput = Rss::Channel::TextInput.new
446
+ set = setup_values(textInput)
447
+ if set
448
+ rss.channel.textInput = textInput
449
+ set_parent(textInput, rss.channel)
450
+ setup_other_elements(rss, textInput)
451
+ end
452
+ end
453
+
454
+ private
455
+ def required_variable_names
456
+ %w(title description name link)
457
+ end
458
+ end
459
+ end
460
+
461
+ add_maker("0.9", "0.92", RSS09)
462
+ add_maker("0.91", "0.91", RSS09)
463
+ add_maker("0.92", "0.92", RSS09)
464
+ add_maker("rss0.91", "0.91", RSS09)
465
+ add_maker("rss0.92", "0.92", RSS09)
466
+ end
467
+ end