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.
- checksums.yaml +4 -4
- data/.travis.yml +5 -6
- data/lib/rss/0.9.rb +20 -20
- data/lib/rss/1.0.rb +24 -24
- data/lib/rss/2.0.rb +3 -3
- data/lib/rss/atom.rb +94 -4
- data/lib/rss/content/1.0.rb +0 -1
- data/lib/rss/content/2.0.rb +0 -1
- data/lib/rss/converter.rb +22 -14
- data/lib/rss/dublincore.rb +8 -8
- data/lib/rss/dublincore/1.0.rb +0 -1
- data/lib/rss/dublincore/2.0.rb +0 -1
- data/lib/rss/dublincore/atom.rb +0 -1
- data/lib/rss/image.rb +9 -9
- data/lib/rss/maker.rb +40 -6
- data/lib/rss/maker/0.9.rb +64 -23
- data/lib/rss/maker/1.0.rb +7 -6
- data/lib/rss/maker/2.0.rb +11 -11
- data/lib/rss/maker/base.rb +118 -42
- data/lib/rss/maker/dublincore.rb +1 -4
- data/lib/rss/maker/entry.rb +3 -3
- data/lib/rss/maker/feed.rb +3 -6
- data/lib/rss/maker/image.rb +3 -3
- data/lib/rss/maker/itunes.rb +1 -1
- data/lib/rss/maker/taxonomy.rb +4 -4
- data/lib/rss/maker/trackback.rb +1 -1
- data/lib/rss/parser.rb +54 -27
- data/lib/rss/rexmlparser.rb +5 -5
- data/lib/rss/rss.rb +54 -24
- data/lib/rss/syndication.rb +3 -3
- data/lib/rss/taxonomy.rb +9 -9
- data/lib/rss/trackback.rb +18 -18
- data/lib/rss/utils.rb +2 -2
- data/lib/rss/xml-stylesheet.rb +2 -2
- data/lib/rss/xmlparser.rb +7 -7
- data/lib/rss/xmlscanner.rb +5 -5
- data/lib/rubysl/rss/rss.rb +76 -4
- data/lib/rubysl/rss/version.rb +1 -1
- data/rubysl-rss.gemspec +0 -1
- metadata +2 -16
data/lib/rss/content/1.0.rb
CHANGED
data/lib/rss/content/2.0.rb
CHANGED
data/lib/rss/converter.rb
CHANGED
@@ -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
|
data/lib/rss/dublincore.rb
CHANGED
@@ -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
|
data/lib/rss/dublincore/1.0.rb
CHANGED
data/lib/rss/dublincore/2.0.rb
CHANGED
data/lib/rss/dublincore/atom.rb
CHANGED
data/lib/rss/image.rb
CHANGED
@@ -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
|
|
data/lib/rss/maker.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
15
|
-
|
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
|
data/lib/rss/maker/0.9.rb
CHANGED
@@ -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
|
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
|
-
|
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
|
-
|
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
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
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
|