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:
		
							parent
							
								
									6375c68f88
								
							
						
					
					
						commit
						cee0c36a08
					
				
					 11 changed files with 151 additions and 60 deletions
				
			
		
							
								
								
									
										5
									
								
								NEWS
									
										
									
									
									
								
							
							
						
						
									
										5
									
								
								NEWS
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -26,6 +26,11 @@ sufficient information, see the ChangeLog file or Redmine
 | 
			
		|||
 | 
			
		||||
=== 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)
 | 
			
		||||
 | 
			
		||||
=== Stdlib compatibility issues (excluding feature bug fixes)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -77,6 +77,8 @@
 | 
			
		|||
module RSS
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
require "rss/version"
 | 
			
		||||
 | 
			
		||||
require 'rss/1.0'
 | 
			
		||||
require 'rss/2.0'
 | 
			
		||||
require 'rss/atom'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -277,34 +277,46 @@ module RSS
 | 
			
		|||
        def parse(duration, do_validate=true)
 | 
			
		||||
          if do_validate and /\A(?:
 | 
			
		||||
                                  \d?\d:[0-5]\d:[0-5]\d|
 | 
			
		||||
                                  [0-5]?\d:[0-5]\d
 | 
			
		||||
                                  [0-5]?\d:[0-5]\d|
 | 
			
		||||
                                  \d+
 | 
			
		||||
                                )\z/x !~ duration
 | 
			
		||||
            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
 | 
			
		||||
          end
 | 
			
		||||
 | 
			
		||||
          components = duration.split(':')
 | 
			
		||||
          components[3..-1] = nil if components.size > 3
 | 
			
		||||
          if duration.include?(':')
 | 
			
		||||
            components = duration.split(':')
 | 
			
		||||
            components[3..-1] = nil if components.size > 3
 | 
			
		||||
 | 
			
		||||
          components.unshift("00") until components.size == 3
 | 
			
		||||
 | 
			
		||||
          components.collect do |component|
 | 
			
		||||
            component.to_i
 | 
			
		||||
            components.unshift("00") until components.size == 3
 | 
			
		||||
            components.collect do |component|
 | 
			
		||||
              component.to_i
 | 
			
		||||
            end
 | 
			
		||||
          else
 | 
			
		||||
            seconds_to_components(duration.to_i)
 | 
			
		||||
          end
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        def construct(hour, minute, second)
 | 
			
		||||
          components = [minute, second]
 | 
			
		||||
        def construct(hours, minutes, seconds)
 | 
			
		||||
          components = [minutes, seconds]
 | 
			
		||||
          if components.include?(nil)
 | 
			
		||||
            nil
 | 
			
		||||
          else
 | 
			
		||||
            components.unshift(hour) if hour and hour > 0
 | 
			
		||||
            components.unshift(hours) if hours and hours > 0
 | 
			
		||||
            components.collect do |component|
 | 
			
		||||
              "%02d" % component
 | 
			
		||||
            end.join(":")
 | 
			
		||||
            end.join(':')
 | 
			
		||||
          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
 | 
			
		||||
 | 
			
		||||
      content_setup
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -278,7 +278,7 @@ module RSS
 | 
			
		|||
            vars = super
 | 
			
		||||
            if @maker.feed_version == "0.91"
 | 
			
		||||
              vars << "title" unless title {|t| t.have_required_values?}
 | 
			
		||||
              vars << "link" unless link {|l| l.have_required_values?}
 | 
			
		||||
              vars << "link" unless link
 | 
			
		||||
            end
 | 
			
		||||
            vars
 | 
			
		||||
          end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
begin
 | 
			
		||||
  require_relative "lib/rss"
 | 
			
		||||
  require_relative "lib/rss/version"
 | 
			
		||||
rescue LoadError
 | 
			
		||||
  # for Ruby core repository
 | 
			
		||||
  require_relative "rss"
 | 
			
		||||
  require_relative "version"
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
Gem::Specification.new do |spec|
 | 
			
		||||
| 
						 | 
				
			
			@ -16,18 +16,60 @@ Gem::Specification.new do |spec|
 | 
			
		|||
  spec.homepage      = "https://github.com/ruby/rss"
 | 
			
		||||
  spec.license       = "BSD-2-Clause"
 | 
			
		||||
 | 
			
		||||
  spec.files         = [".gitignore", ".travis.yml", "Gemfile", "LICENSE.txt", "README.md", "Rakefile",
 | 
			
		||||
  "bin/console", "bin/setup", "lib/rss.rb", "lib/rss/0.9.rb", "lib/rss/1.0.rb", "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/xml-stylesheet.rb",
 | 
			
		||||
  "lib/rss/xml.rb", "lib/rss/xmlparser.rb", "lib/rss/xmlscanner.rb", "rss.gemspec"]
 | 
			
		||||
  spec.files         = [
 | 
			
		||||
    ".gitignore",
 | 
			
		||||
    ".travis.yml",
 | 
			
		||||
    "Gemfile",
 | 
			
		||||
    "LICENSE.txt",
 | 
			
		||||
    "NEWS.md",
 | 
			
		||||
    "README.md",
 | 
			
		||||
    "Rakefile",
 | 
			
		||||
    "lib/rss.rb",
 | 
			
		||||
    "lib/rss/0.9.rb",
 | 
			
		||||
    "lib/rss/1.0.rb",
 | 
			
		||||
    "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.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
 | 
			
		||||
  spec.require_paths = ["lib"]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,10 +68,6 @@ require_relative "converter"
 | 
			
		|||
require_relative "xml-stylesheet"
 | 
			
		||||
 | 
			
		||||
module RSS
 | 
			
		||||
 | 
			
		||||
  # The current version of RSS
 | 
			
		||||
  VERSION = "0.2.7"
 | 
			
		||||
 | 
			
		||||
  # The URI of the RSS 1.0 specification
 | 
			
		||||
  URI = "http://purl.org/rss/1.0/"
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										4
									
								
								lib/rss/version.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								lib/rss/version.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,4 @@
 | 
			
		|||
module RSS
 | 
			
		||||
  # The current version of RSS
 | 
			
		||||
  VERSION = "0.2.8"
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			@ -1113,8 +1113,11 @@ EOA
 | 
			
		|||
          :xml_content => target.xhtml,
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
 | 
			
		||||
                                 maker_extractor, feed_extractor,
 | 
			
		||||
      _assert_maker_atom_element(feed_type,
 | 
			
		||||
                                 maker_readers, true,
 | 
			
		||||
                                 feed_readers,
 | 
			
		||||
                                 maker_extractor,
 | 
			
		||||
                                 feed_extractor,
 | 
			
		||||
                                 &block)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1215,8 +1218,11 @@ EOA
 | 
			
		|||
          :content => target.content,
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
 | 
			
		||||
                                 maker_extractor, feed_extractor,
 | 
			
		||||
      _assert_maker_atom_element(feed_type,
 | 
			
		||||
                                 maker_readers, false,
 | 
			
		||||
                                 feed_readers,
 | 
			
		||||
                                 maker_extractor,
 | 
			
		||||
                                 feed_extractor,
 | 
			
		||||
                                 &block)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1248,13 +1254,21 @@ EOA
 | 
			
		|||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
 | 
			
		||||
                                   maker_extractor, feed_extractor)
 | 
			
		||||
    def _assert_maker_atom_element(feed_type,
 | 
			
		||||
                                   maker_readers,
 | 
			
		||||
                                   maker_readers_need_block,
 | 
			
		||||
                                   feed_readers,
 | 
			
		||||
                                   maker_extractor,
 | 
			
		||||
                                   feed_extractor)
 | 
			
		||||
      _wrap_assertion do
 | 
			
		||||
        element = nil
 | 
			
		||||
        feed = RSS::Maker.make("atom:#{feed_type}") do |maker|
 | 
			
		||||
          yield maker
 | 
			
		||||
          target = chain_reader(maker, maker_readers) {|x| x}
 | 
			
		||||
          if maker_readers_need_block
 | 
			
		||||
            target = chain_reader(maker, maker_readers) {|x| x}
 | 
			
		||||
          else
 | 
			
		||||
            target = chain_reader(maker, maker_readers)
 | 
			
		||||
          end
 | 
			
		||||
          element = maker_extractor.call(target)
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1462,8 +1476,11 @@ EOA
 | 
			
		|||
          :content => target.content,
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
 | 
			
		||||
                                 maker_extractor, feed_extractor,
 | 
			
		||||
      _assert_maker_atom_element(feed_type,
 | 
			
		||||
                                 maker_readers, true,
 | 
			
		||||
                                 feed_readers,
 | 
			
		||||
                                 maker_extractor,
 | 
			
		||||
                                 feed_extractor,
 | 
			
		||||
                                 &block)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1505,8 +1522,11 @@ EOA
 | 
			
		|||
          :content => target.content,
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
 | 
			
		||||
                                 maker_extractor, feed_extractor,
 | 
			
		||||
      _assert_maker_atom_element(feed_type,
 | 
			
		||||
                                 maker_readers, true,
 | 
			
		||||
                                 feed_readers,
 | 
			
		||||
                                 maker_extractor,
 | 
			
		||||
                                 feed_extractor,
 | 
			
		||||
                                 &block)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1623,8 +1643,11 @@ EOA
 | 
			
		|||
          :uri => target.content,
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
 | 
			
		||||
                                 maker_extractor, feed_extractor,
 | 
			
		||||
      _assert_maker_atom_element(feed_type,
 | 
			
		||||
                                 maker_readers, true,
 | 
			
		||||
                                 feed_readers,
 | 
			
		||||
                                 maker_extractor,
 | 
			
		||||
                                 feed_extractor,
 | 
			
		||||
                                 &block)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1664,8 +1687,11 @@ EOA
 | 
			
		|||
          nil
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
 | 
			
		||||
                                 maker_extractor, feed_extractor,
 | 
			
		||||
      _assert_maker_atom_element(feed_type,
 | 
			
		||||
                                 maker_readers, true,
 | 
			
		||||
                                 feed_readers,
 | 
			
		||||
                                 maker_extractor,
 | 
			
		||||
                                 feed_extractor,
 | 
			
		||||
                                 &block)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1727,8 +1753,11 @@ EOA
 | 
			
		|||
          :out_of_line => target.out_of_line?,
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
      _assert_maker_atom_element(feed_type, maker_readers, feed_readers,
 | 
			
		||||
                                 maker_extractor, feed_extractor,
 | 
			
		||||
      _assert_maker_atom_element(feed_type,
 | 
			
		||||
                                 maker_readers, true,
 | 
			
		||||
                                 feed_readers,
 | 
			
		||||
                                 maker_extractor,
 | 
			
		||||
                                 feed_extractor,
 | 
			
		||||
                                 &block)
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -203,14 +203,18 @@ module RSS
 | 
			
		|||
        _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, 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("10: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("xx:xx:xx", &rss20_maker)
 | 
			
		||||
 | 
			
		||||
        _assert_itunes_duration_not_available_value("", &rss20_maker)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -250,14 +250,21 @@ module RSS
 | 
			
		|||
                                      feed_readers)
 | 
			
		||||
        _assert_maker_itunes_duration(0, 4, 5, "4:05", maker_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("10: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("xx:xx:xx", maker_readers)
 | 
			
		||||
 | 
			
		||||
        _assert_maker_itunes_duration_invalid_value("", maker_readers)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue