rubysl-rss 1.0.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|