rubysl-rss 1.0.0 → 2.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.
@@ -1,5 +1,4 @@
1
1
  require 'rss/1.0'
2
- require 'rss/content'
3
2
 
4
3
  module RSS
5
4
  RDF.install_ns(CONTENT_PREFIX, CONTENT_URI)
@@ -1,5 +1,4 @@
1
1
  require "rss/2.0"
2
- require "rss/content"
3
2
 
4
3
  module RSS
5
4
  Rss.install_ns(CONTENT_PREFIX, CONTENT_URI)
@@ -3,10 +3,14 @@ require "rss/utils"
3
3
  module RSS
4
4
 
5
5
  class Converter
6
-
6
+
7
7
  include Utils
8
8
 
9
9
  def initialize(to_enc, from_enc=nil)
10
+ if "".respond_to?(:encode)
11
+ @to_encoding = to_enc
12
+ return
13
+ end
10
14
  normalized_to_enc = to_enc.downcase.gsub(/-/, '_')
11
15
  from_enc ||= 'utf-8'
12
16
  normalized_from_enc = from_enc.downcase.gsub(/-/, '_')
@@ -23,7 +27,11 @@ module RSS
23
27
  end
24
28
 
25
29
  def convert(value)
26
- value
30
+ if value.is_a?(String) and value.respond_to?(:encode)
31
+ value.encode(@to_encoding)
32
+ else
33
+ value
34
+ end
27
35
  end
28
36
 
29
37
  def def_convert(depth=0)
@@ -55,11 +63,11 @@ module RSS
55
63
  raise UnknownConversionMethodError.new(to_enc, from_enc)
56
64
  end
57
65
  end
58
-
66
+
59
67
  def def_else_enc(to_enc, from_enc)
60
68
  def_iconv_convert(to_enc, from_enc, 0)
61
69
  end
62
-
70
+
63
71
  def def_same_enc()
64
72
  def_convert do |value|
65
73
  value
@@ -93,40 +101,40 @@ module RSS
93
101
  def def_to_euc_jp_from_utf_8
94
102
  def_uconv_convert_if_can('u8toeuc', 'EUC-JP', 'UTF-8', '-We')
95
103
  end
96
-
104
+
97
105
  def def_to_utf_8_from_euc_jp
98
106
  def_uconv_convert_if_can('euctou8', 'UTF-8', 'EUC-JP', '-Ew')
99
107
  end
100
-
108
+
101
109
  def def_to_shift_jis_from_utf_8
102
110
  def_uconv_convert_if_can('u8tosjis', 'Shift_JIS', 'UTF-8', '-Ws')
103
111
  end
104
-
112
+
105
113
  def def_to_utf_8_from_shift_jis
106
114
  def_uconv_convert_if_can('sjistou8', 'UTF-8', 'Shift_JIS', '-Sw')
107
115
  end
108
-
116
+
109
117
  def def_to_euc_jp_from_shift_jis
110
118
  require "nkf"
111
119
  def_convert do |value|
112
120
  "NKF.nkf('-Se', #{value})"
113
121
  end
114
122
  end
115
-
123
+
116
124
  def def_to_shift_jis_from_euc_jp
117
125
  require "nkf"
118
126
  def_convert do |value|
119
127
  "NKF.nkf('-Es', #{value})"
120
128
  end
121
129
  end
122
-
130
+
123
131
  def def_to_euc_jp_from_iso_2022_jp
124
132
  require "nkf"
125
133
  def_convert do |value|
126
134
  "NKF.nkf('-Je', #{value})"
127
135
  end
128
136
  end
129
-
137
+
130
138
  def def_to_iso_2022_jp_from_euc_jp
131
139
  require "nkf"
132
140
  def_convert do |value|
@@ -139,7 +147,7 @@ module RSS
139
147
  "#{value}.unpack('C*').pack('U*')"
140
148
  end
141
149
  end
142
-
150
+
143
151
  def def_to_iso_8859_1_from_utf_8
144
152
  def_convert do |value|
145
153
  <<-EOC
@@ -156,7 +164,7 @@ module RSS
156
164
  EOC
157
165
  end
158
166
  end
159
-
167
+
160
168
  end
161
-
169
+
162
170
  end
@@ -25,7 +25,7 @@ module RSS
25
25
  def #{full_name}
26
26
  @#{full_name}.first and @#{full_name}.first.value
27
27
  end
28
-
28
+
29
29
  def #{full_name}=(new_value)
30
30
  @#{full_name}[0] = Utils.new_with_value_if_need(#{klass_name}, new_value)
31
31
  end
@@ -50,7 +50,7 @@ module RSS
50
50
  EOC
51
51
  end
52
52
  end
53
-
53
+
54
54
  module DublinCoreModel
55
55
 
56
56
  extend BaseModel
@@ -76,26 +76,26 @@ module RSS
76
76
  DATE_ELEMENTS = {
77
77
  "date" => "w3cdtf",
78
78
  }
79
-
79
+
80
80
  ELEMENT_NAME_INFOS = DublinCoreModel::TEXT_ELEMENTS.to_a
81
81
  DublinCoreModel::DATE_ELEMENTS.each do |name, |
82
82
  ELEMENT_NAME_INFOS << [name, nil]
83
83
  end
84
-
84
+
85
85
  ELEMENTS = TEXT_ELEMENTS.keys + DATE_ELEMENTS.keys
86
86
 
87
87
  ELEMENTS.each do |name, plural_name|
88
88
  module_eval(<<-EOC, *get_file_and_line_from_caller(0))
89
89
  class DublinCore#{Utils.to_class_name(name)} < Element
90
90
  include RSS10
91
-
91
+
92
92
  content_setup
93
93
 
94
94
  class << self
95
95
  def required_prefix
96
96
  DC_PREFIX
97
97
  end
98
-
98
+
99
99
  def required_uri
100
100
  DC_URI
101
101
  end
@@ -105,7 +105,7 @@ module RSS
105
105
 
106
106
  alias_method(:value, :content)
107
107
  alias_method(:value=, :content=)
108
-
108
+
109
109
  def initialize(*args)
110
110
  if Utils.element_initialize_arguments?(args)
111
111
  super
@@ -114,7 +114,7 @@ module RSS
114
114
  self.content = args[0]
115
115
  end
116
116
  end
117
-
117
+
118
118
  def full_name
119
119
  tag_name_with_prefix(DC_PREFIX)
120
120
  end
@@ -1,5 +1,4 @@
1
1
  require "rss/1.0"
2
- require "rss/dublincore"
3
2
 
4
3
  module RSS
5
4
  RDF.install_ns(DC_PREFIX, DC_URI)
@@ -1,5 +1,4 @@
1
1
  require "rss/2.0"
2
- require "rss/dublincore"
3
2
 
4
3
  module RSS
5
4
  Rss.install_ns(DC_PREFIX, DC_URI)
@@ -1,5 +1,4 @@
1
1
  require "rss/atom"
2
- require "rss/dublincore"
3
2
 
4
3
  module RSS
5
4
  module Atom
@@ -15,7 +15,7 @@ module RSS
15
15
  BaseListener.install_class_name(IMAGE_URI, name, "Image#{class_name}")
16
16
  IMAGE_ELEMENTS << "#{IMAGE_PREFIX}_#{name}"
17
17
  end
18
-
18
+
19
19
  module ImageModelUtils
20
20
  def validate_one_tag_name(ignore_unknown_element, name, tags)
21
21
  if !ignore_unknown_element
@@ -25,7 +25,7 @@ module RSS
25
25
  raise TooMuchTagError.new(name, tag_name) if tags.size > 1
26
26
  end
27
27
  end
28
-
28
+
29
29
  module ImageItemModel
30
30
  include ImageModelUtils
31
31
  extend BaseModel
@@ -43,12 +43,12 @@ module RSS
43
43
  include DublinCoreModel
44
44
 
45
45
  @tag_name = "item"
46
-
46
+
47
47
  class << self
48
48
  def required_prefix
49
49
  IMAGE_PREFIX
50
50
  end
51
-
51
+
52
52
  def required_uri
53
53
  IMAGE_URI
54
54
  end
@@ -102,11 +102,11 @@ module RSS
102
102
  end
103
103
  end
104
104
  end
105
-
105
+
106
106
  module ImageFaviconModel
107
107
  include ImageModelUtils
108
108
  extend BaseModel
109
-
109
+
110
110
  def self.append_features(klass)
111
111
  super
112
112
 
@@ -122,12 +122,12 @@ module RSS
122
122
  include DublinCoreModel
123
123
 
124
124
  @tag_name = "favicon"
125
-
125
+
126
126
  class << self
127
127
  def required_prefix
128
128
  IMAGE_PREFIX
129
129
  end
130
-
130
+
131
131
  def required_uri
132
132
  IMAGE_URI
133
133
  end
@@ -154,7 +154,7 @@ module RSS
154
154
  end
155
155
  set_size(new_value)
156
156
  end
157
-
157
+
158
158
  alias image_size= size=
159
159
  alias image_size size
160
160
 
@@ -1,30 +1,64 @@
1
1
  require "rss/rss"
2
2
 
3
3
  module RSS
4
+ ##
5
+ #
6
+ # Provides a set of builders for various RSS objects
7
+ #
8
+ # * Feeds
9
+ # * RSS 0.91
10
+ # * RSS 1.0
11
+ # * RSS 2.0
12
+ # * Atom 1.0
13
+ #
14
+ # * Elements
15
+ # * Atom::Entry
16
+
4
17
  module Maker
18
+
19
+ # Collection of supported makers
5
20
  MAKERS = {}
6
21
 
7
22
  class << self
23
+ # Builder for an RSS object
24
+ # Creates an object of the type passed in +args+
25
+ #
26
+ # Executes the +block+ to populate elements of the created RSS object
8
27
  def make(version, &block)
9
- m = maker(version)
10
- raise UnsupportedMakerVersionError.new(version) if m.nil?
11
- m[:maker].make(m[:version], &block)
28
+ self[version].make(&block)
12
29
  end
13
30
 
14
- def maker(version)
15
- MAKERS[version]
31
+ # Returns the maker for the +version+
32
+ def [](version)
33
+ maker_info = maker(version)
34
+ raise UnsupportedMakerVersionError.new(version) if maker_info.nil?
35
+ maker_info[:maker]
16
36
  end
17
37
 
38
+ # Adds a maker to the set of supported makers
18
39
  def add_maker(version, normalized_version, maker)
19
40
  MAKERS[version] = {:maker => maker, :version => normalized_version}
20
41
  end
21
42
 
43
+ # Returns collection of supported maker versions
22
44
  def versions
23
45
  MAKERS.keys.uniq.sort
24
46
  end
25
47
 
48
+ # Returns collection of supported makers
26
49
  def makers
27
- MAKERS.values.collect {|info| info[:maker]}.uniq
50
+ MAKERS.values.collect { |info| info[:maker] }.uniq
51
+ end
52
+
53
+ # Returns true if the version is supported
54
+ def supported?(version)
55
+ versions.include?(version)
56
+ end
57
+
58
+ private
59
+ # Can I remove this method?
60
+ def maker(version)
61
+ MAKERS[version]
28
62
  end
29
63
  end
30
64
  end
@@ -4,14 +4,14 @@ require "rss/maker/base"
4
4
 
5
5
  module RSS
6
6
  module Maker
7
-
7
+
8
8
  class RSS09 < RSSBase
9
-
10
- def initialize(feed_version="0.92")
9
+
10
+ def initialize(feed_version)
11
11
  super
12
12
  @feed_type = "rss"
13
13
  end
14
-
14
+
15
15
  private
16
16
  def make_feed
17
17
  Rss.new(@feed_version, @version, @encoding, @standalone)
@@ -24,7 +24,7 @@ module RSS
24
24
  class Channel < ChannelBase
25
25
  def to_feed(rss)
26
26
  channel = Rss::Channel.new
27
- set = setup_values(channel)
27
+ setup_values(channel)
28
28
  _not_set_required_variables = not_set_required_variables
29
29
  if _not_set_required_variables.empty?
30
30
  rss.channel = channel
@@ -38,20 +38,20 @@ module RSS
38
38
  raise NotSetError.new("maker.channel", _not_set_required_variables)
39
39
  end
40
40
  end
41
-
41
+
42
42
  private
43
43
  def setup_items(rss)
44
44
  @maker.items.to_feed(rss)
45
45
  end
46
-
46
+
47
47
  def setup_image(rss)
48
48
  @maker.image.to_feed(rss)
49
49
  end
50
-
50
+
51
51
  def setup_textinput(rss)
52
52
  @maker.textinput.to_feed(rss)
53
53
  end
54
-
54
+
55
55
  def variables
56
56
  super + ["pubDate"]
57
57
  end
@@ -78,7 +78,7 @@ module RSS
78
78
  end
79
79
  end
80
80
  end
81
-
81
+
82
82
  class Day < DayBase
83
83
  def to_feed(rss, days)
84
84
  day = Rss::Channel::SkipDays::Day.new
@@ -96,7 +96,7 @@ module RSS
96
96
  end
97
97
  end
98
98
  end
99
-
99
+
100
100
  class SkipHours < SkipHoursBase
101
101
  def to_feed(rss, channel)
102
102
  unless @hours.empty?
@@ -108,7 +108,7 @@ module RSS
108
108
  end
109
109
  end
110
110
  end
111
-
111
+
112
112
  class Hour < HourBase
113
113
  def to_feed(rss, hours)
114
114
  hour = Rss::Channel::SkipHours::Hour.new
@@ -126,7 +126,7 @@ module RSS
126
126
  end
127
127
  end
128
128
  end
129
-
129
+
130
130
  class Cloud < CloudBase
131
131
  def to_feed(*args)
132
132
  end
@@ -243,7 +243,7 @@ module RSS
243
243
  true
244
244
  end
245
245
  end
246
-
246
+
247
247
  class Items < ItemsBase
248
248
  def to_feed(rss)
249
249
  if rss.channel
@@ -253,11 +253,11 @@ module RSS
253
253
  setup_other_elements(rss, rss.items)
254
254
  end
255
255
  end
256
-
256
+
257
257
  class Item < ItemBase
258
258
  def to_feed(rss)
259
259
  item = Rss::Channel::Item.new
260
- set = setup_values(item)
260
+ setup_values(item)
261
261
  _not_set_required_variables = not_set_required_variables
262
262
  if _not_set_required_variables.empty?
263
263
  rss.items << item
@@ -439,7 +439,7 @@ module RSS
439
439
  end
440
440
  end
441
441
  end
442
-
442
+
443
443
  class Textinput < TextinputBase
444
444
  def to_feed(rss)
445
445
  textInput = Rss::Channel::TextInput.new
@@ -457,11 +457,52 @@ module RSS
457
457
  end
458
458
  end
459
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)
460
+
461
+ class RSS091 < RSS09
462
+ def initialize(feed_version="0.91")
463
+ super
464
+ end
465
+
466
+ class Channel < RSS09::Channel
467
+ end
468
+
469
+ class Items < RSS09::Items
470
+ class Item < RSS09::Items::Item
471
+ end
472
+ end
473
+
474
+ class Image < RSS09::Image
475
+ end
476
+
477
+ class Textinput < RSS09::Textinput
478
+ end
479
+ end
480
+
481
+ class RSS092 < RSS09
482
+ def initialize(feed_version="0.92")
483
+ super
484
+ end
485
+
486
+ class Channel < RSS09::Channel
487
+ end
488
+
489
+ class Items < RSS09::Items
490
+ class Item < RSS09::Items::Item
491
+ end
492
+ end
493
+
494
+ class Image < RSS09::Image
495
+ end
496
+
497
+ class Textinput < RSS09::Textinput
498
+ end
499
+ end
500
+
501
+ add_maker("0.9", "0.92", RSS092)
502
+ add_maker("0.91", "0.91", RSS091)
503
+ add_maker("0.92", "0.92", RSS092)
504
+ add_maker("rss0.9", "0.92", RSS092)
505
+ add_maker("rss0.91", "0.91", RSS091)
506
+ add_maker("rss0.92", "0.92", RSS092)
466
507
  end
467
508
  end