rss 0.2.8 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/NEWS.md +54 -0
- data/README.md +11 -11
- data/lib/rss/itunes.rb +58 -1
- data/lib/rss/maker/itunes.rb +15 -0
- data/lib/rss/parser.rb +1 -1
- data/lib/rss/rss.rb +43 -15
- data/lib/rss/utils.rb +0 -18
- data/lib/rss/version.rb +1 -1
- data/lib/rss/xml-stylesheet.rb +3 -4
- data/lib/rss/xml.rb +3 -2
- data/lib/rss.rb +11 -11
- metadata +21 -13
- data/.gitignore +0 -9
- data/.travis.yml +0 -26
- data/Gemfile +0 -6
- data/Rakefile +0 -8
- data/rss.gemspec +0 -80
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58f47515ab88a55b8a9167dba145b023e87ef01de35cbe4fa6e2f0872689325a
|
4
|
+
data.tar.gz: a7f2ecc1d5c444d90d62ea7ccdf249c5553cca01e0741c1a3e481d71fbd1afd7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8ae8d5e4ec7ab53fda8fc389b70c36542e3e964fc341e80379c1aa9128bad3cba1d31fb45bb68a8cbf5b40e81204780b7b57124b7fd431540b3bc9989ef133a
|
7
|
+
data.tar.gz: 7c63fda45b9f9c8002b6c7273de075ac01ec086e2e7596dc1f3d9521910dae7259248c52162e21d57f4f07cd0a20779d8a781448a2260a3bbe4e8ffc5c07283d
|
data/NEWS.md
CHANGED
@@ -1,5 +1,59 @@
|
|
1
1
|
# News
|
2
2
|
|
3
|
+
## 0.3.0 - 2023-08-12
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
|
7
|
+
* itunes: Added support for `<itunes:type>`.
|
8
|
+
|
9
|
+
GH-16
|
10
|
+
|
11
|
+
Patch by Luis Alfredo Lorenzo.
|
12
|
+
|
13
|
+
* itunes: Added support for `<itunes:episode>` and `<itunes:season>`.
|
14
|
+
|
15
|
+
GH-31
|
16
|
+
|
17
|
+
Patch by Daniel-Ernest Luff.
|
18
|
+
|
19
|
+
* itunes: Added support for `<itunes:title>`.
|
20
|
+
|
21
|
+
GH-44
|
22
|
+
|
23
|
+
Patch by Ryan Brunner.
|
24
|
+
|
25
|
+
* itunes: Added support for `<itunes:episodeType>`.
|
26
|
+
|
27
|
+
GH-45
|
28
|
+
|
29
|
+
Reported by Tim Uckun.
|
30
|
+
|
31
|
+
### Thanks
|
32
|
+
|
33
|
+
* Luis Alfredo Lorenzo
|
34
|
+
|
35
|
+
* Daniel-Ernest Luff
|
36
|
+
|
37
|
+
* Ryan Brunner
|
38
|
+
|
39
|
+
* Tim Uckun
|
40
|
+
|
41
|
+
## 0.2.9 - 2020-02-19
|
42
|
+
|
43
|
+
### Improvements
|
44
|
+
|
45
|
+
* Removed needless taint check with Ruby 2.7.
|
46
|
+
[GitHub#7][Patch by Jeremy Evans]
|
47
|
+
|
48
|
+
* Added support for `itunes:image` in `item` element.
|
49
|
+
[GitHub#11][Patch by Ian McKenzie]
|
50
|
+
|
51
|
+
### Thanks
|
52
|
+
|
53
|
+
* Jeremy Evans
|
54
|
+
|
55
|
+
* Ian McKenzie
|
56
|
+
|
3
57
|
## 0.2.8 - 2019-01-24
|
4
58
|
|
5
59
|
### Improvements
|
data/README.md
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
# RSS
|
2
2
|
|
3
|
-
Really Simple Syndication (RSS) is a family of formats that describe
|
3
|
+
Really Simple Syndication (RSS) is a family of formats that describe _feeds_, specially constructed XML documents that allow an interested person to subscribe and receive updates from a particular web service. This portion of the standard library provides tooling to read and create these feeds.
|
4
4
|
|
5
5
|
The standard library supports RSS 0.91, 1.0, 2.0, and Atom, a related format. Here are some links to the standards documents for these formats:
|
6
6
|
|
7
7
|
* RSS
|
8
|
-
* 0.9.1
|
9
|
-
* 1.0
|
10
|
-
* 2.0
|
11
|
-
* Atom
|
8
|
+
* [0.9.1](http://www.rssboard.org/rss-0-9-1-netscape)
|
9
|
+
* [1.0](http://web.resource.org/rss/1.0/)
|
10
|
+
* [2.0](http://www.rssboard.org/rss-specification)
|
11
|
+
* [Atom](https://tools.ietf.org/html/rfc4287)
|
12
12
|
|
13
13
|
## Installation
|
14
14
|
|
@@ -32,12 +32,12 @@ Or install it yourself as:
|
|
32
32
|
|
33
33
|
If you'd like to read someone's RSS feed with your Ruby code, you've come to the right place. It's really easy to do this, but we'll need the help of open-uri:
|
34
34
|
|
35
|
-
```
|
35
|
+
```ruby
|
36
36
|
require 'rss'
|
37
37
|
require 'open-uri'
|
38
38
|
|
39
|
-
url = '
|
40
|
-
open(url) do |rss|
|
39
|
+
url = 'https://www.ruby-lang.org/en/feeds/news.rss'
|
40
|
+
URI.open(url) do |rss|
|
41
41
|
feed = RSS::Parser.parse(rss)
|
42
42
|
puts "Title: #{feed.channel.title}"
|
43
43
|
feed.items.each do |item|
|
@@ -52,17 +52,17 @@ As you can see, the workhorse is RSS::Parser#parse, which takes the source of th
|
|
52
52
|
|
53
53
|
Producing our own RSS feeds is easy as well. Let's make a very basic feed:
|
54
54
|
|
55
|
-
```
|
55
|
+
```ruby
|
56
56
|
require "rss"
|
57
57
|
|
58
58
|
rss = RSS::Maker.make("atom") do |maker|
|
59
59
|
maker.channel.author = "matz"
|
60
60
|
maker.channel.updated = Time.now.to_s
|
61
|
-
maker.channel.about = "
|
61
|
+
maker.channel.about = "https://www.ruby-lang.org/en/feeds/news.rss"
|
62
62
|
maker.channel.title = "Example Feed"
|
63
63
|
|
64
64
|
maker.items.new_item do |item|
|
65
|
-
item.link = "
|
65
|
+
item.link = "https://www.ruby-lang.org/en/news/2010/12/25/ruby-1-9-2-p136-is-released/"
|
66
66
|
item.title = "Ruby 1.9.2-p136 is released"
|
67
67
|
item.updated = Time.now.to_s
|
68
68
|
end
|
data/lib/rss/itunes.rb
CHANGED
@@ -80,6 +80,8 @@ module RSS
|
|
80
80
|
["image", :attribute, "href"],
|
81
81
|
["owner", :element],
|
82
82
|
["new-feed-url"],
|
83
|
+
["type", :itunes_episode],
|
84
|
+
["title"],
|
83
85
|
] + ITunesBaseModel::ELEMENT_INFOS
|
84
86
|
|
85
87
|
class ITunesCategory < Element
|
@@ -258,7 +260,62 @@ module RSS
|
|
258
260
|
end
|
259
261
|
|
260
262
|
ELEMENT_INFOS = ITunesBaseModel::ELEMENT_INFOS +
|
261
|
-
[
|
263
|
+
[
|
264
|
+
["duration", :element, "content"],
|
265
|
+
["image", :attribute, "href"],
|
266
|
+
["season", :positive_integer],
|
267
|
+
["episode", :positive_integer],
|
268
|
+
["episodeType", :itunes_episode_type],
|
269
|
+
["title"],
|
270
|
+
]
|
271
|
+
|
272
|
+
class ITunesImage < Element
|
273
|
+
include RSS09
|
274
|
+
|
275
|
+
@tag_name = "image"
|
276
|
+
|
277
|
+
class << self
|
278
|
+
def required_prefix
|
279
|
+
ITUNES_PREFIX
|
280
|
+
end
|
281
|
+
|
282
|
+
def required_uri
|
283
|
+
ITUNES_URI
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
287
|
+
[
|
288
|
+
["href", "", true]
|
289
|
+
].each do |name, uri, required|
|
290
|
+
install_get_attribute(name, uri, required)
|
291
|
+
end
|
292
|
+
|
293
|
+
def initialize(*args)
|
294
|
+
if Utils.element_initialize_arguments?(args)
|
295
|
+
super
|
296
|
+
else
|
297
|
+
super()
|
298
|
+
self.href = args[0]
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
def full_name
|
303
|
+
tag_name_with_prefix(ITUNES_PREFIX)
|
304
|
+
end
|
305
|
+
|
306
|
+
private
|
307
|
+
def maker_target(target)
|
308
|
+
if href
|
309
|
+
target.itunes_image {|image| image}
|
310
|
+
else
|
311
|
+
nil
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
def setup_maker_attributes(image)
|
316
|
+
image.href = href
|
317
|
+
end
|
318
|
+
end
|
262
319
|
|
263
320
|
class ITunesDuration < Element
|
264
321
|
include RSS09
|
data/lib/rss/maker/itunes.rb
CHANGED
@@ -15,6 +15,8 @@ module RSS
|
|
15
15
|
def_yes_other_accessor(klass, full_name)
|
16
16
|
when :explicit_clean_other
|
17
17
|
def_explicit_clean_other_accessor(klass, full_name)
|
18
|
+
when :positive_integer, :itunes_episode, :itunes_episode_type
|
19
|
+
klass.def_other_element(full_name)
|
18
20
|
when :csv
|
19
21
|
def_csv_accessor(klass, full_name)
|
20
22
|
when :element, :attribute
|
@@ -171,6 +173,18 @@ module RSS
|
|
171
173
|
end
|
172
174
|
end
|
173
175
|
|
176
|
+
class ITunesImageBase < Base
|
177
|
+
add_need_initialize_variable("href")
|
178
|
+
attr_accessor("href")
|
179
|
+
|
180
|
+
def to_feed(feed, current)
|
181
|
+
if @href and current.respond_to?(:itunes_image)
|
182
|
+
current.itunes_image ||= current.class::ITunesImage.new
|
183
|
+
current.itunes_image.href = @href
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
174
188
|
class ITunesDurationBase < Base
|
175
189
|
attr_reader :content
|
176
190
|
add_need_initialize_variable("content")
|
@@ -237,6 +251,7 @@ module RSS
|
|
237
251
|
class ItemBase
|
238
252
|
include Maker::ITunesItemModel
|
239
253
|
class ITunesDuration < ITunesDurationBase; end
|
254
|
+
class ITunesImage < ITunesImageBase; end
|
240
255
|
end
|
241
256
|
end
|
242
257
|
end
|
data/lib/rss/parser.rb
CHANGED
data/lib/rss/rss.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
|
+
|
3
|
+
require "English"
|
4
|
+
require "cgi/util"
|
2
5
|
require "time"
|
3
6
|
|
4
7
|
class Time
|
@@ -61,8 +64,6 @@ class Time
|
|
61
64
|
end
|
62
65
|
end
|
63
66
|
|
64
|
-
|
65
|
-
require "English"
|
66
67
|
require_relative "utils"
|
67
68
|
require_relative "converter"
|
68
69
|
require_relative "xml-stylesheet"
|
@@ -260,7 +261,7 @@ EOC
|
|
260
261
|
end
|
261
262
|
if content
|
262
263
|
rv = "\#{indent}<#{elem_name}>"
|
263
|
-
value =
|
264
|
+
value = CGI.escapeHTML(content.to_s)
|
264
265
|
if need_convert
|
265
266
|
rv << convert(value)
|
266
267
|
else
|
@@ -291,7 +292,7 @@ EOC
|
|
291
292
|
<<-EOC
|
292
293
|
if @#{n}
|
293
294
|
rv = "\#{indent}<#{elem_name}>"
|
294
|
-
value =
|
295
|
+
value = CGI.escapeHTML(@#{n}.#{type}.to_s)
|
295
296
|
if need_convert
|
296
297
|
rv << convert(value)
|
297
298
|
else
|
@@ -375,7 +376,7 @@ EOC
|
|
375
376
|
module_eval(<<-EOC, __FILE__, __LINE__ + 1)
|
376
377
|
attr_reader(:#{attr})
|
377
378
|
def #{attr}?
|
378
|
-
ExplicitCleanOther.parse(@#{attr})
|
379
|
+
Utils::ExplicitCleanOther.parse(@#{attr})
|
379
380
|
end
|
380
381
|
EOC
|
381
382
|
end
|
@@ -541,7 +542,7 @@ EOC
|
|
541
542
|
end
|
542
543
|
|
543
544
|
def explicit_clean_other_writer(name, disp_name=name)
|
544
|
-
module_eval(<<-EOC,
|
545
|
+
module_eval(<<-EOC, *get_file_and_line_from_caller(2))
|
545
546
|
def #{name}=(value)
|
546
547
|
value = (value ? "yes" : "no") if [true, false].include?(value)
|
547
548
|
@#{name} = value
|
@@ -550,7 +551,7 @@ EOC
|
|
550
551
|
end
|
551
552
|
|
552
553
|
def yes_other_writer(name, disp_name=name)
|
553
|
-
module_eval(<<-EOC,
|
554
|
+
module_eval(<<-EOC, *get_file_and_line_from_caller(2))
|
554
555
|
def #{name}=(new_value)
|
555
556
|
if [true, false].include?(new_value)
|
556
557
|
new_value = new_value ? "yes" : "no"
|
@@ -561,7 +562,7 @@ EOC
|
|
561
562
|
end
|
562
563
|
|
563
564
|
def csv_writer(name, disp_name=name)
|
564
|
-
module_eval(<<-EOC,
|
565
|
+
module_eval(<<-EOC, *get_file_and_line_from_caller(2))
|
565
566
|
def #{name}=(new_value)
|
566
567
|
@#{name} = Utils::CSV.parse(new_value)
|
567
568
|
end
|
@@ -569,13 +570,37 @@ EOC
|
|
569
570
|
end
|
570
571
|
|
571
572
|
def csv_integer_writer(name, disp_name=name)
|
572
|
-
module_eval(<<-EOC,
|
573
|
+
module_eval(<<-EOC, *get_file_and_line_from_caller(2))
|
573
574
|
def #{name}=(new_value)
|
574
575
|
@#{name} = Utils::CSV.parse(new_value) {|v| Integer(v)}
|
575
576
|
end
|
576
577
|
EOC
|
577
578
|
end
|
578
579
|
|
580
|
+
def itunes_episode_writer(name, disp_name=name)
|
581
|
+
module_eval(<<-EOC, *get_file_and_line_from_caller(2))
|
582
|
+
def #{name}=(new_value)
|
583
|
+
if @do_validate and
|
584
|
+
!["episodic", "serial", nil].include?(new_value)
|
585
|
+
raise NotAvailableValueError.new('#{disp_name}', new_value)
|
586
|
+
end
|
587
|
+
@#{name} = new_value
|
588
|
+
end
|
589
|
+
EOC
|
590
|
+
end
|
591
|
+
|
592
|
+
def itunes_episode_type_writer(name, disp_name=name)
|
593
|
+
module_eval(<<-DEF, *get_file_and_line_from_caller(2))
|
594
|
+
def #{name}=(new_value)
|
595
|
+
if @do_validate and
|
596
|
+
!["Full", "Trailer", "Bonus", nil].include?(new_value)
|
597
|
+
raise NotAvailableValueError.new('#{disp_name}', new_value)
|
598
|
+
end
|
599
|
+
@#{name} = new_value
|
600
|
+
end
|
601
|
+
DEF
|
602
|
+
end
|
603
|
+
|
579
604
|
def def_children_accessor(accessor_name, plural_name)
|
580
605
|
module_eval(<<-EOC, *get_file_and_line_from_caller(2))
|
581
606
|
def #{plural_name}
|
@@ -659,7 +684,6 @@ EOC
|
|
659
684
|
|
660
685
|
class Element
|
661
686
|
extend BaseModel
|
662
|
-
include Utils
|
663
687
|
extend Utils::InheritedReader
|
664
688
|
include SetupMaker
|
665
689
|
|
@@ -736,7 +760,7 @@ EOC
|
|
736
760
|
writer_type, reader_type = type
|
737
761
|
def_corresponded_attr_writer name, writer_type, disp_name
|
738
762
|
def_corresponded_attr_reader name, reader_type
|
739
|
-
if type == :boolean and
|
763
|
+
if type == :boolean and /\Ais/ =~ name
|
740
764
|
alias_method "#{$POSTMATCH}?", name
|
741
765
|
end
|
742
766
|
self::GET_ATTRIBUTES << [name, uri, required, element_name]
|
@@ -763,9 +787,13 @@ EOC
|
|
763
787
|
when :yes_other
|
764
788
|
yes_other_writer name, disp_name
|
765
789
|
when :csv
|
766
|
-
csv_writer name
|
790
|
+
csv_writer name, disp_name
|
767
791
|
when :csv_integer
|
768
|
-
csv_integer_writer name
|
792
|
+
csv_integer_writer name, disp_name
|
793
|
+
when :itunes_episode
|
794
|
+
itunes_episode_writer name, disp_name
|
795
|
+
when :itunes_episode_type
|
796
|
+
itunes_episode_type_writer name, disp_name
|
769
797
|
else
|
770
798
|
attr_writer name
|
771
799
|
end
|
@@ -1023,7 +1051,7 @@ EOC
|
|
1023
1051
|
start_tag = ["#{indent}<#{full_name}"]
|
1024
1052
|
unless attrs.empty?
|
1025
1053
|
start_tag << attrs.collect do |key, value|
|
1026
|
-
%Q[#{
|
1054
|
+
%Q[#{CGI.escapeHTML(key.to_s)}="#{CGI.escapeHTML(value.to_s)}"]
|
1027
1055
|
end.join("\n#{next_indent}")
|
1028
1056
|
end
|
1029
1057
|
start_tag.join(" ")
|
@@ -1231,7 +1259,7 @@ EOC
|
|
1231
1259
|
else
|
1232
1260
|
_content = content
|
1233
1261
|
_content = [_content].pack("m0") if need_base64_encode?
|
1234
|
-
|
1262
|
+
CGI.escapeHTML(_content.to_s)
|
1235
1263
|
end
|
1236
1264
|
end
|
1237
1265
|
end
|
data/lib/rss/utils.rb
CHANGED
@@ -87,24 +87,6 @@ module RSS
|
|
87
87
|
[file, line]
|
88
88
|
end
|
89
89
|
|
90
|
-
# Takes a string +s+ with some HTML in it, and escapes '&', '"', '<' and '>', by
|
91
|
-
# replacing them with the appropriate entities.
|
92
|
-
#
|
93
|
-
# This method is also aliased to h, for convenience.
|
94
|
-
#
|
95
|
-
# Examples:
|
96
|
-
#
|
97
|
-
# require 'rss/utils'
|
98
|
-
#
|
99
|
-
# RSS::Utils.html_escape("Dungeons & Dragons")
|
100
|
-
# # => "Dungeons & Dragons"
|
101
|
-
# RSS::Utils.h(">_>")
|
102
|
-
# # => ">_>"
|
103
|
-
def html_escape(s)
|
104
|
-
s.to_s.gsub(/&/, "&").gsub(/\"/, """).gsub(/>/, ">").gsub(/</, "<")
|
105
|
-
end
|
106
|
-
alias h html_escape
|
107
|
-
|
108
90
|
# If +value+ is an instance of class +klass+, return it, else
|
109
91
|
# create a new instance of +klass+ with value +value+.
|
110
92
|
def new_with_value_if_need(klass, value)
|
data/lib/rss/version.rb
CHANGED
data/lib/rss/xml-stylesheet.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
|
-
|
2
|
+
|
3
|
+
require "cgi/util"
|
3
4
|
|
4
5
|
module RSS
|
5
6
|
|
@@ -24,8 +25,6 @@ module RSS
|
|
24
25
|
|
25
26
|
class XMLStyleSheet
|
26
27
|
|
27
|
-
include Utils
|
28
|
-
|
29
28
|
ATTRIBUTES = %w(href type title media charset alternate)
|
30
29
|
|
31
30
|
GUESS_TABLE = {
|
@@ -59,7 +58,7 @@ module RSS
|
|
59
58
|
rv << %Q[<?xml-stylesheet]
|
60
59
|
ATTRIBUTES.each do |name|
|
61
60
|
if __send__(name)
|
62
|
-
rv << %Q[ #{name}="#{
|
61
|
+
rv << %Q[ #{name}="#{CGI.escapeHTML(__send__(name).to_s)}"]
|
63
62
|
end
|
64
63
|
end
|
65
64
|
rv << %Q[?>]
|
data/lib/rss/xml.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: false
|
2
|
-
|
2
|
+
|
3
|
+
require "cgi/util"
|
3
4
|
|
4
5
|
module RSS
|
5
6
|
module XML
|
@@ -46,7 +47,7 @@ module RSS
|
|
46
47
|
def to_s
|
47
48
|
rv = "<#{full_name}"
|
48
49
|
attributes.each do |key, value|
|
49
|
-
rv << " #{
|
50
|
+
rv << " #{CGI.escapeHTML(key.to_s)}=\"#{CGI.escapeHTML(value.to_s)}\""
|
50
51
|
end
|
51
52
|
if children.empty?
|
52
53
|
rv << "/>"
|
data/lib/rss.rb
CHANGED
@@ -79,16 +79,16 @@ end
|
|
79
79
|
|
80
80
|
require "rss/version"
|
81
81
|
|
82
|
-
require
|
83
|
-
require
|
84
|
-
require
|
85
|
-
require
|
86
|
-
require
|
87
|
-
require
|
88
|
-
require
|
89
|
-
require
|
90
|
-
require
|
91
|
-
require
|
92
|
-
require
|
82
|
+
require "rss/1.0"
|
83
|
+
require "rss/2.0"
|
84
|
+
require "rss/atom"
|
85
|
+
require "rss/content"
|
86
|
+
require "rss/dublincore"
|
87
|
+
require "rss/image"
|
88
|
+
require "rss/itunes"
|
89
|
+
require "rss/slash"
|
90
|
+
require "rss/syndication"
|
91
|
+
require "rss/taxonomy"
|
92
|
+
require "rss/trackback"
|
93
93
|
|
94
94
|
require "rss/maker"
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kouhei Sutou
|
8
|
-
autorequire:
|
9
|
-
bindir:
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rexml
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,13 +73,9 @@ executables: []
|
|
59
73
|
extensions: []
|
60
74
|
extra_rdoc_files: []
|
61
75
|
files:
|
62
|
-
- ".gitignore"
|
63
|
-
- ".travis.yml"
|
64
|
-
- Gemfile
|
65
76
|
- LICENSE.txt
|
66
77
|
- NEWS.md
|
67
78
|
- README.md
|
68
|
-
- Rakefile
|
69
79
|
- lib/rss.rb
|
70
80
|
- lib/rss/0.9.rb
|
71
81
|
- lib/rss/1.0.rb
|
@@ -110,12 +120,11 @@ files:
|
|
110
120
|
- lib/rss/xml.rb
|
111
121
|
- lib/rss/xmlparser.rb
|
112
122
|
- lib/rss/xmlscanner.rb
|
113
|
-
- rss.gemspec
|
114
123
|
homepage: https://github.com/ruby/rss
|
115
124
|
licenses:
|
116
125
|
- BSD-2-Clause
|
117
126
|
metadata: {}
|
118
|
-
post_install_message:
|
127
|
+
post_install_message:
|
119
128
|
rdoc_options: []
|
120
129
|
require_paths:
|
121
130
|
- lib
|
@@ -130,9 +139,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
139
|
- !ruby/object:Gem::Version
|
131
140
|
version: '0'
|
132
141
|
requirements: []
|
133
|
-
|
134
|
-
|
135
|
-
signing_key:
|
142
|
+
rubygems_version: 3.5.0.dev
|
143
|
+
signing_key:
|
136
144
|
specification_version: 4
|
137
145
|
summary: Family of libraries that support various formats of XML "feeds".
|
138
146
|
test_files: []
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
notifications:
|
2
|
-
webhooks:
|
3
|
-
- https://webhook.commit-email.info/
|
4
|
-
|
5
|
-
language: ruby
|
6
|
-
matrix:
|
7
|
-
include:
|
8
|
-
- name: "2.3"
|
9
|
-
rvm: 2.3
|
10
|
-
- name: "2.4"
|
11
|
-
rvm: 2.4.5
|
12
|
-
- name: "2.5"
|
13
|
-
rvm: 2.5.3
|
14
|
-
- name: "2.6"
|
15
|
-
rvm: 2.6
|
16
|
-
- name: "trunk"
|
17
|
-
rvm: ruby-head
|
18
|
-
- name: "gem"
|
19
|
-
rvm: 2.6
|
20
|
-
install:
|
21
|
-
- rake install
|
22
|
-
script:
|
23
|
-
- mkdir -p tmp
|
24
|
-
- cd tmp
|
25
|
-
- cp -a ../test/ ./
|
26
|
-
- ../run-test.rb
|
data/Gemfile
DELETED
data/Rakefile
DELETED
data/rss.gemspec
DELETED
@@ -1,80 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require_relative "lib/rss/version"
|
3
|
-
rescue LoadError
|
4
|
-
# for Ruby core repository
|
5
|
-
require_relative "version"
|
6
|
-
end
|
7
|
-
|
8
|
-
Gem::Specification.new do |spec|
|
9
|
-
spec.name = "rss"
|
10
|
-
spec.version = RSS::VERSION
|
11
|
-
spec.authors = ["Kouhei Sutou"]
|
12
|
-
spec.email = ["kou@cozmixng.org"]
|
13
|
-
|
14
|
-
spec.summary = %q{Family of libraries that support various formats of XML "feeds".}
|
15
|
-
spec.description = %q{Family of libraries that support various formats of XML "feeds".}
|
16
|
-
spec.homepage = "https://github.com/ruby/rss"
|
17
|
-
spec.license = "BSD-2-Clause"
|
18
|
-
|
19
|
-
spec.files = [
|
20
|
-
".gitignore",
|
21
|
-
".travis.yml",
|
22
|
-
"Gemfile",
|
23
|
-
"LICENSE.txt",
|
24
|
-
"NEWS.md",
|
25
|
-
"README.md",
|
26
|
-
"Rakefile",
|
27
|
-
"lib/rss.rb",
|
28
|
-
"lib/rss/0.9.rb",
|
29
|
-
"lib/rss/1.0.rb",
|
30
|
-
"lib/rss/2.0.rb",
|
31
|
-
"lib/rss/atom.rb",
|
32
|
-
"lib/rss/content.rb",
|
33
|
-
"lib/rss/content/1.0.rb",
|
34
|
-
"lib/rss/content/2.0.rb",
|
35
|
-
"lib/rss/converter.rb",
|
36
|
-
"lib/rss/dublincore.rb",
|
37
|
-
"lib/rss/dublincore/1.0.rb",
|
38
|
-
"lib/rss/dublincore/2.0.rb",
|
39
|
-
"lib/rss/dublincore/atom.rb",
|
40
|
-
"lib/rss/image.rb",
|
41
|
-
"lib/rss/itunes.rb",
|
42
|
-
"lib/rss/maker.rb",
|
43
|
-
"lib/rss/maker/0.9.rb",
|
44
|
-
"lib/rss/maker/1.0.rb",
|
45
|
-
"lib/rss/maker/2.0.rb",
|
46
|
-
"lib/rss/maker/atom.rb",
|
47
|
-
"lib/rss/maker/base.rb",
|
48
|
-
"lib/rss/maker/content.rb",
|
49
|
-
"lib/rss/maker/dublincore.rb",
|
50
|
-
"lib/rss/maker/entry.rb",
|
51
|
-
"lib/rss/maker/feed.rb",
|
52
|
-
"lib/rss/maker/image.rb",
|
53
|
-
"lib/rss/maker/itunes.rb",
|
54
|
-
"lib/rss/maker/slash.rb",
|
55
|
-
"lib/rss/maker/syndication.rb",
|
56
|
-
"lib/rss/maker/taxonomy.rb",
|
57
|
-
"lib/rss/maker/trackback.rb",
|
58
|
-
"lib/rss/parser.rb",
|
59
|
-
"lib/rss/rexmlparser.rb",
|
60
|
-
"lib/rss/rss.rb",
|
61
|
-
"lib/rss/slash.rb",
|
62
|
-
"lib/rss/syndication.rb",
|
63
|
-
"lib/rss/taxonomy.rb",
|
64
|
-
"lib/rss/trackback.rb",
|
65
|
-
"lib/rss/utils.rb",
|
66
|
-
"lib/rss/version.rb",
|
67
|
-
"lib/rss/xml-stylesheet.rb",
|
68
|
-
"lib/rss/xml.rb",
|
69
|
-
"lib/rss/xmlparser.rb",
|
70
|
-
"lib/rss/xmlscanner.rb",
|
71
|
-
"rss.gemspec",
|
72
|
-
]
|
73
|
-
spec.bindir = "exe"
|
74
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
75
|
-
spec.require_paths = ["lib"]
|
76
|
-
|
77
|
-
spec.add_development_dependency "bundler"
|
78
|
-
spec.add_development_dependency "rake"
|
79
|
-
spec.add_development_dependency "test-unit"
|
80
|
-
end
|