1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Upgrade RSS to 0.2.8

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66920 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
kou 2019-01-25 06:35:04 +00:00
parent 6375c68f88
commit cee0c36a08
11 changed files with 151 additions and 60 deletions

5
NEWS
View file

@ -26,6 +26,11 @@ sufficient information, see the ChangeLog file or Redmine
=== Stdlib updates (outstanding ones only) === Stdlib updates (outstanding ones only)
[RSS]
* Upgrade to RSS 0.2.8.
See https://github.com/ruby/rss/blob/master/NEWS.md.
=== Compatibility issues (excluding feature bug fixes) === Compatibility issues (excluding feature bug fixes)
=== Stdlib compatibility issues (excluding feature bug fixes) === Stdlib compatibility issues (excluding feature bug fixes)

View file

@ -77,6 +77,8 @@
module RSS module RSS
end end
require "rss/version"
require 'rss/1.0' require 'rss/1.0'
require 'rss/2.0' require 'rss/2.0'
require 'rss/atom' require 'rss/atom'

View file

@ -277,34 +277,46 @@ module RSS
def parse(duration, do_validate=true) def parse(duration, do_validate=true)
if do_validate and /\A(?: if do_validate and /\A(?:
\d?\d:[0-5]\d:[0-5]\d| \d?\d:[0-5]\d:[0-5]\d|
[0-5]?\d:[0-5]\d [0-5]?\d:[0-5]\d|
\d+
)\z/x !~ duration )\z/x !~ duration
raise ArgumentError, raise ArgumentError,
"must be one of HH:MM:SS, H:MM:SS, MM::SS, M:SS: " + "must be one of HH:MM:SS, H:MM:SS, MM:SS, M:SS, S+: " +
duration.inspect duration.inspect
end end
if duration.include?(':')
components = duration.split(':') components = duration.split(':')
components[3..-1] = nil if components.size > 3 components[3..-1] = nil if components.size > 3
components.unshift("00") until components.size == 3 components.unshift("00") until components.size == 3
components.collect do |component| components.collect do |component|
component.to_i component.to_i
end end
else
seconds_to_components(duration.to_i)
end
end end
def construct(hour, minute, second) def construct(hours, minutes, seconds)
components = [minute, second] components = [minutes, seconds]
if components.include?(nil) if components.include?(nil)
nil nil
else else
components.unshift(hour) if hour and hour > 0 components.unshift(hours) if hours and hours > 0
components.collect do |component| components.collect do |component|
"%02d" % component "%02d" % component
end.join(":") end.join(':')
end end
end end
private
def seconds_to_components(total_seconds)
hours = total_seconds / (60 * 60)
minutes = (total_seconds / 60) % 60
seconds = total_seconds % 60
[hours, minutes, seconds]
end
end end
content_setup content_setup

View file

@ -278,7 +278,7 @@ module RSS
vars = super vars = super
if @maker.feed_version == "0.91" if @maker.feed_version == "0.91"
vars << "title" unless title {|t| t.have_required_values?} vars << "title" unless title {|t| t.have_required_values?}
vars << "link" unless link {|l| l.have_required_values?} vars << "link" unless link
end end
vars vars
end end

View file

@ -1,8 +1,8 @@
begin begin
require_relative "lib/rss" require_relative "lib/rss/version"
rescue LoadError rescue LoadError
# for Ruby core repository # for Ruby core repository
require_relative "rss" require_relative "version"
end end
Gem::Specification.new do |spec| Gem::Specification.new do |spec|
@ -16,18 +16,60 @@ Gem::Specification.new do |spec|
spec.homepage = "https://github.com/ruby/rss" spec.homepage = "https://github.com/ruby/rss"
spec.license = "BSD-2-Clause" spec.license = "BSD-2-Clause"
spec.files = [".gitignore", ".travis.yml", "Gemfile", "LICENSE.txt", "README.md", "Rakefile", spec.files = [
"bin/console", "bin/setup", "lib/rss.rb", "lib/rss/0.9.rb", "lib/rss/1.0.rb", "lib/rss/2.0.rb", ".gitignore",
"lib/rss/atom.rb", "lib/rss/content.rb", "lib/rss/content/1.0.rb", "lib/rss/content/2.0.rb", ".travis.yml",
"lib/rss/converter.rb", "lib/rss/dublincore.rb", "lib/rss/dublincore/1.0.rb", "lib/rss/dublincore/2.0.rb", "Gemfile",
"lib/rss/dublincore/atom.rb", "lib/rss/image.rb", "lib/rss/itunes.rb", "lib/rss/maker.rb", "LICENSE.txt",
"lib/rss/maker/0.9.rb", "lib/rss/maker/1.0.rb", "lib/rss/maker/2.0.rb", "lib/rss/maker/atom.rb", "NEWS.md",
"lib/rss/maker/base.rb", "lib/rss/maker/content.rb", "lib/rss/maker/dublincore.rb", "lib/rss/maker/entry.rb", "README.md",
"lib/rss/maker/feed.rb", "lib/rss/maker/image.rb", "lib/rss/maker/itunes.rb", "lib/rss/maker/slash.rb", "Rakefile",
"lib/rss/maker/syndication.rb", "lib/rss/maker/taxonomy.rb", "lib/rss/maker/trackback.rb", "lib/rss.rb",
"lib/rss/parser.rb", "lib/rss/rexmlparser.rb", "lib/rss/rss.rb", "lib/rss/slash.rb", "lib/rss/syndication.rb", "lib/rss/0.9.rb",
"lib/rss/taxonomy.rb", "lib/rss/trackback.rb", "lib/rss/utils.rb", "lib/rss/xml-stylesheet.rb", "lib/rss/1.0.rb",
"lib/rss/xml.rb", "lib/rss/xmlparser.rb", "lib/rss/xmlscanner.rb", "rss.gemspec"] "lib/rss/2.0.rb",
"lib/rss/atom.rb",
"lib/rss/content.rb",
"lib/rss/content/1.0.rb",
"lib/rss/content/2.0.rb",
"lib/rss/converter.rb",
"lib/rss/dublincore.rb",
"lib/rss/dublincore/1.0.rb",
"lib/rss/dublincore/2.0.rb",
"lib/rss/dublincore/atom.rb",
"lib/rss/image.rb",
"lib/rss/itunes.rb",
"lib/rss/maker.rb",
"lib/rss/maker/0.9.rb",
"lib/rss/maker/1.0.rb",
"lib/rss/maker/2.0.rb",
"lib/rss/maker/atom.rb",
"lib/rss/maker/base.rb",
"lib/rss/maker/content.rb",
"lib/rss/maker/dublincore.rb",
"lib/rss/maker/entry.rb",
"lib/rss/maker/feed.rb",
"lib/rss/maker/image.rb",
"lib/rss/maker/itunes.rb",
"lib/rss/maker/slash.rb",
"lib/rss/maker/syndication.rb",
"lib/rss/maker/taxonomy.rb",
"lib/rss/maker/trackback.rb",
"lib/rss/parser.rb",
"lib/rss/rexmlparser.rb",
"lib/rss/rss.rb",
"lib/rss/slash.rb",
"lib/rss/syndication.rb",
"lib/rss/taxonomy.rb",
"lib/rss/trackback.rb",
"lib/rss/utils.rb",
"lib/rss/version.rb",
"lib/rss/xml-stylesheet.rb",
"lib/rss/xml.rb",
"lib/rss/xmlparser.rb",
"lib/rss/xmlscanner.rb",
"rss.gemspec",
]
spec.bindir = "exe" spec.bindir = "exe"
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) } spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"] spec.require_paths = ["lib"]

View file

@ -68,10 +68,6 @@ require_relative "converter"
require_relative "xml-stylesheet" require_relative "xml-stylesheet"
module RSS module RSS
# The current version of RSS
VERSION = "0.2.7"
# The URI of the RSS 1.0 specification # The URI of the RSS 1.0 specification
URI = "http://purl.org/rss/1.0/" URI = "http://purl.org/rss/1.0/"

4
lib/rss/version.rb Normal file
View file

@ -0,0 +1,4 @@
module RSS
# The current version of RSS
VERSION = "0.2.8"
end

View file

@ -1113,8 +1113,11 @@ EOA
:xml_content => target.xhtml, :xml_content => target.xhtml,
} }
end end
_assert_maker_atom_element(feed_type, maker_readers, feed_readers, _assert_maker_atom_element(feed_type,
maker_extractor, feed_extractor, maker_readers, true,
feed_readers,
maker_extractor,
feed_extractor,
&block) &block)
end end
@ -1215,8 +1218,11 @@ EOA
:content => target.content, :content => target.content,
} }
end end
_assert_maker_atom_element(feed_type, maker_readers, feed_readers, _assert_maker_atom_element(feed_type,
maker_extractor, feed_extractor, maker_readers, false,
feed_readers,
maker_extractor,
feed_extractor,
&block) &block)
end end
@ -1248,13 +1254,21 @@ EOA
end end
end end
def _assert_maker_atom_element(feed_type, maker_readers, feed_readers, def _assert_maker_atom_element(feed_type,
maker_extractor, feed_extractor) maker_readers,
maker_readers_need_block,
feed_readers,
maker_extractor,
feed_extractor)
_wrap_assertion do _wrap_assertion do
element = nil element = nil
feed = RSS::Maker.make("atom:#{feed_type}") do |maker| feed = RSS::Maker.make("atom:#{feed_type}") do |maker|
yield maker yield maker
if maker_readers_need_block
target = chain_reader(maker, maker_readers) {|x| x} target = chain_reader(maker, maker_readers) {|x| x}
else
target = chain_reader(maker, maker_readers)
end
element = maker_extractor.call(target) element = maker_extractor.call(target)
end end
@ -1462,8 +1476,11 @@ EOA
:content => target.content, :content => target.content,
} }
end end
_assert_maker_atom_element(feed_type, maker_readers, feed_readers, _assert_maker_atom_element(feed_type,
maker_extractor, feed_extractor, maker_readers, true,
feed_readers,
maker_extractor,
feed_extractor,
&block) &block)
end end
@ -1505,8 +1522,11 @@ EOA
:content => target.content, :content => target.content,
} }
end end
_assert_maker_atom_element(feed_type, maker_readers, feed_readers, _assert_maker_atom_element(feed_type,
maker_extractor, feed_extractor, maker_readers, true,
feed_readers,
maker_extractor,
feed_extractor,
&block) &block)
end end
@ -1623,8 +1643,11 @@ EOA
:uri => target.content, :uri => target.content,
} }
end end
_assert_maker_atom_element(feed_type, maker_readers, feed_readers, _assert_maker_atom_element(feed_type,
maker_extractor, feed_extractor, maker_readers, true,
feed_readers,
maker_extractor,
feed_extractor,
&block) &block)
end end
@ -1664,8 +1687,11 @@ EOA
nil nil
end end
end end
_assert_maker_atom_element(feed_type, maker_readers, feed_readers, _assert_maker_atom_element(feed_type,
maker_extractor, feed_extractor, maker_readers, true,
feed_readers,
maker_extractor,
feed_extractor,
&block) &block)
end end
@ -1727,8 +1753,11 @@ EOA
:out_of_line => target.out_of_line?, :out_of_line => target.out_of_line?,
} }
end end
_assert_maker_atom_element(feed_type, maker_readers, feed_readers, _assert_maker_atom_element(feed_type,
maker_extractor, feed_extractor, maker_readers, true,
feed_readers,
maker_extractor,
feed_extractor,
&block) &block)
end end

View file

@ -203,14 +203,18 @@ module RSS
_assert_itunes_duration(7, 14, 5, "7:14:05", readers, &rss20_maker) _assert_itunes_duration(7, 14, 5, "7:14:05", readers, &rss20_maker)
_assert_itunes_duration(0, 4, 55, "04:55", readers, &rss20_maker) _assert_itunes_duration(0, 4, 55, "04:55", readers, &rss20_maker)
_assert_itunes_duration(0, 4, 5, "4:05", readers, &rss20_maker) _assert_itunes_duration(0, 4, 5, "4:05", readers, &rss20_maker)
_assert_itunes_duration(0, 0, 5, "5", readers, &rss20_maker)
_assert_itunes_duration(0, 3, 15, "195", readers, &rss20_maker)
_assert_itunes_duration(1, 0, 1, "3601", readers, &rss20_maker)
_assert_itunes_duration_not_available_value("5", &rss20_maker)
_assert_itunes_duration_not_available_value("09:07:14:05", &rss20_maker) _assert_itunes_duration_not_available_value("09:07:14:05", &rss20_maker)
_assert_itunes_duration_not_available_value("10:5", &rss20_maker) _assert_itunes_duration_not_available_value("10:5", &rss20_maker)
_assert_itunes_duration_not_available_value("10:03:5", &rss20_maker) _assert_itunes_duration_not_available_value("10:03:5", &rss20_maker)
_assert_itunes_duration_not_available_value("10:3:05", &rss20_maker) _assert_itunes_duration_not_available_value("10:3:05", &rss20_maker)
_assert_itunes_duration_not_available_value("xx:xx:xx", &rss20_maker) _assert_itunes_duration_not_available_value("xx:xx:xx", &rss20_maker)
_assert_itunes_duration_not_available_value("", &rss20_maker)
end end
end end

View file

@ -250,14 +250,21 @@ module RSS
feed_readers) feed_readers)
_assert_maker_itunes_duration(0, 4, 5, "4:05", maker_readers, _assert_maker_itunes_duration(0, 4, 5, "4:05", maker_readers,
feed_readers) feed_readers)
_assert_maker_itunes_duration(0, 0, 5, "0:05", maker_readers,
feed_readers)
_assert_maker_itunes_duration_by_value(0, 5, 15, "315", maker_readers,
feed_readers)
_assert_maker_itunes_duration_by_value(1, 0, 1, "3601", maker_readers,
feed_readers)
_assert_maker_itunes_duration_invalid_value("5", maker_readers)
_assert_maker_itunes_duration_invalid_value("09:07:14:05", maker_readers) _assert_maker_itunes_duration_invalid_value("09:07:14:05", maker_readers)
_assert_maker_itunes_duration_invalid_value("10:5", maker_readers) _assert_maker_itunes_duration_invalid_value("10:5", maker_readers)
_assert_maker_itunes_duration_invalid_value("10:03:5", maker_readers) _assert_maker_itunes_duration_invalid_value("10:03:5", maker_readers)
_assert_maker_itunes_duration_invalid_value("10:3:05", maker_readers) _assert_maker_itunes_duration_invalid_value("10:3:05", maker_readers)
_assert_maker_itunes_duration_invalid_value("xx:xx:xx", maker_readers) _assert_maker_itunes_duration_invalid_value("xx:xx:xx", maker_readers)
_assert_maker_itunes_duration_invalid_value("", maker_readers)
end end
end end

View file

@ -1,10 +0,0 @@
# frozen_string_literal: false
require_relative "rss-testcase"
module RSS
class TestVersion < TestCase
def test_version
assert_equal("0.2.7", ::RSS::VERSION)
end
end
end