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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0661103c506f9158deefa370289f1f197422d06b500b92319e63d953d8243842
4
- data.tar.gz: f855b9669a566ac469b85820a5bbe2ff6d60be14e72040096d997057c653e596
3
+ metadata.gz: 58f47515ab88a55b8a9167dba145b023e87ef01de35cbe4fa6e2f0872689325a
4
+ data.tar.gz: a7f2ecc1d5c444d90d62ea7ccdf249c5553cca01e0741c1a3e481d71fbd1afd7
5
5
  SHA512:
6
- metadata.gz: cd38d5deb4396141f6e8a7e384cea8c3af86d7a54c42dc1e8f20d8447129c2e1f12a5fcb169d836353687ab16b6838999618f760b09f8d46246b17442977889e
7
- data.tar.gz: 4cfaf4d6c6794344edee289fe73a0cc810e8a9ffe95c47f845f47a883c14dcb7ae64cdf6d4ce0a3e89bd1aa96ba8440958a4cb8294a78c648886d3e91e41a857
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 '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.
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[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[http://tools.ietf.org/html/rfc4287]
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 = 'http://www.ruby-lang.org/en/feeds/news.rss'
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 = "http://www.ruby-lang.org/en/feeds/news.rss"
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 = "http://www.ruby-lang.org/en/news/2010/12/25/ruby-1-9-2-p136-is-released/"
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
- [["duration", :element, "content"]]
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
@@ -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
@@ -120,7 +120,7 @@ module RSS
120
120
 
121
121
  if uri.respond_to?(:read)
122
122
  uri.read
123
- elsif !rss.tainted? and File.readable?(rss)
123
+ elsif (RUBY_VERSION >= '2.7' || !rss.tainted?) and File.readable?(rss)
124
124
  File.open(rss) {|f| f.read}
125
125
  else
126
126
  rss
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 = html_escape(content)
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 = html_escape(@#{n}.#{type})
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, __FILE__, __LINE__ + 1)
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, __FILE__, __LINE__ + 1)
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, __FILE__, __LINE__ + 1)
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, __FILE__, __LINE__ + 1)
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 /^is/ =~ name
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[#{h key}="#{h value}"]
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
- h(_content)
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 &amp; Dragons"
101
- # RSS::Utils.h(">_>")
102
- # # => "&gt;_&gt;"
103
- def html_escape(s)
104
- s.to_s.gsub(/&/, "&amp;").gsub(/\"/, "&quot;").gsub(/>/, "&gt;").gsub(/</, "&lt;")
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
@@ -1,4 +1,4 @@
1
1
  module RSS
2
2
  # The current version of RSS
3
- VERSION = "0.2.8"
3
+ VERSION = "0.3.0"
4
4
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: false
2
- require_relative "utils"
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}="#{h __send__(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
- require_relative "utils"
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 << " #{Utils.html_escape(key)}=\"#{Utils.html_escape(value)}\""
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 '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'
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.2.8
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
8
- autorequire:
9
- bindir: exe
8
+ autorequire:
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-25 00:00:00.000000000 Z
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
- rubyforge_project:
134
- rubygems_version: 2.7.6
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
@@ -1,9 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
- Gemfile.lock
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
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
-
5
- # Specify your gem's dependencies in rss.gemspec
6
- gemspec
data/Rakefile DELETED
@@ -1,8 +0,0 @@
1
- require "bundler/gem_tasks"
2
-
3
- desc "Run test"
4
- task :test do
5
- ruby("run-test.rb")
6
- end
7
-
8
- task :default => :test
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