rss 0.2.8 → 0.3.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/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
|