diff options
-rw-r--r-- | Gemfile | 4 | ||||
-rw-r--r-- | History.md | 7 | ||||
-rw-r--r-- | README.rdoc | 1 | ||||
-rw-r--r-- | Rakefile | 3 | ||||
-rw-r--r-- | lib/mime/type.rb | 15 | ||||
-rw-r--r-- | lib/mime/type/columnar.rb | 4 | ||||
-rw-r--r-- | lib/mime/types.rb | 1 | ||||
-rw-r--r-- | lib/mime/types/_columnar.rb | 1 | ||||
-rw-r--r-- | lib/mime/types/loader.rb | 2 | ||||
-rw-r--r-- | lib/mime/types/logger.rb | 2 | ||||
-rw-r--r-- | mime-types.gemspec | 4 | ||||
-rw-r--r-- | test/test_mime_type.rb | 15 |
12 files changed, 42 insertions, 17 deletions
@@ -1,7 +1,7 @@ # frozen_string_literal: true -# NOTE: This file is present to keep Travis CI happy. Edits to it will not -# be accepted. +# NOTE: This file is not the canonical source of dependencies. Edit the +# Rakefile, instead. source "https://rubygems.org/" @@ -1,6 +1,11 @@ # Changelog -## NEXT / 2021-MM-DD +## 3.4.0 / 2021-06-02 + +- 1 minor enhancement: + + - Added a new field to `MIME::Type` for checking provisional registrations + from IANA. - Documentation: diff --git a/README.rdoc b/README.rdoc index 76e7d16..1f3dca5 100644 --- a/README.rdoc +++ b/README.rdoc @@ -65,6 +65,7 @@ files). A MIME::Type stores the known information about one MIME type. puts text.ascii? # => true puts text.obsolete? # => false puts text.registered? # => true + puts text.provisional? # => false puts text.complete? # => true puts text # => 'text/plain' @@ -34,7 +34,6 @@ spec = Hoe.spec "mime-types" do extra_dev_deps << ["minitest-bonus-assertions", "~> 3.0"] extra_dev_deps << ["minitest-hooks", "~> 1.4"] extra_dev_deps << ["rake", ">= 10.0", "< 14.0"] - extra_dev_deps << ["psych", "~> 3.0"] if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.0") extra_dev_deps << ["simplecov", "~> 0.7"] @@ -249,7 +248,7 @@ task "deps:top", [:number] do |_, args| end task :console do - arguments = %w[pry] + arguments = %w[irb] arguments.push(*spec.spec.require_paths.map { |dir| "-I#{dir}" }) arguments.push("-r#{spec.spec.name.gsub("-", File::SEPARATOR)}") unless system(*arguments) diff --git a/lib/mime/type.rb b/lib/mime/type.rb index cdf2471..ba7e6bf 100644 --- a/lib/mime/type.rb +++ b/lib/mime/type.rb @@ -25,6 +25,7 @@ end # puts text.ascii? # => true # puts text.obsolete? # => false # puts text.registered? # => true +# puts text.provisional? # => false # puts text.complete? # => true # # puts text # => 'text/plain' @@ -92,7 +93,7 @@ class MIME::Type end # The released version of the mime-types library. - VERSION = "3.3.1" + VERSION = "3.4.0" include Comparable @@ -123,7 +124,7 @@ class MIME::Type # Yields the newly constructed +self+ object. def initialize(content_type) # :yields: self @friendly = {} - @obsolete = @registered = false + @obsolete = @registered = @provisional = false @preferred_extension = @docs = @use_instead = nil self.extensions = [] @@ -419,6 +420,14 @@ class MIME::Type attr_accessor :registered alias_method :registered?, :registered + # Indicates whether the MIME type's registration with IANA is provisional. + attr_accessor :provisional + + # Indicates whether the MIME type's registration with IANA is provisional. + def provisional? + registered? && @provisional + end + # MIME types can be specified to be sent across a network in particular # formats. This method returns +true+ when the MIME::Type encoding is set # to <tt>base64</tt>. @@ -493,6 +502,7 @@ class MIME::Type end end coder["registered"] = registered? + coder["provisional"] = provisional? if provisional? coder["signature"] = signature? if signature? coder end @@ -509,6 +519,7 @@ class MIME::Type self.preferred_extension = coder["preferred-extension"] self.obsolete = coder["obsolete"] || false self.registered = coder["registered"] || false + self.provisional = coder["provisional"] || false self.signature = coder["signature"] self.xrefs = coder["xrefs"] || {} self.use_instead = coder["use-instead"] diff --git a/lib/mime/type/columnar.rb b/lib/mime/type/columnar.rb index 93a3350..1b7c3ca 100644 --- a/lib/mime/type/columnar.rb +++ b/lib/mime/type/columnar.rb @@ -35,8 +35,8 @@ class MIME::Type::Columnar < MIME::Type column :encoding, :encoding= column :docs, :docs= column :preferred_extension, :preferred_extension= - column :obsolete, :obsolete=, :obsolete?, :registered, :registered=, - :registered?, :signature, :signature=, :signature?, file: "flags" + column :obsolete, :obsolete=, :obsolete?, :registered, :registered=, :registered?, :signature, :signature=, + :signature?, :provisional, :provisional=, :provisional?, file: "flags" column :xrefs, :xrefs=, :xref_urls column :use_instead, :use_instead= diff --git a/lib/mime/types.rb b/lib/mime/types.rb index 2cf7fc4..1424666 100644 --- a/lib/mime/types.rb +++ b/lib/mime/types.rb @@ -61,6 +61,7 @@ require "mime/type" # puts plaintext.ascii? # => true # puts plaintext.obsolete? # => false # puts plaintext.registered? # => true +# puts plaintext.provisional? # => false # puts plaintext == 'text/plain' # => true # puts MIME::Type.simplified('x-appl/x-zip') # => 'appl/zip' # diff --git a/lib/mime/types/_columnar.rb b/lib/mime/types/_columnar.rb index 777c316..3a52d30 100644 --- a/lib/mime/types/_columnar.rb +++ b/lib/mime/types/_columnar.rb @@ -85,6 +85,7 @@ module MIME::Types::Columnar type.instance_variable_set(:@obsolete, flag(line.shift)) type.instance_variable_set(:@registered, flag(line.shift)) type.instance_variable_set(:@signature, flag(line.shift)) + type.instance_variable_set(:@provisional, flag(line.shift)) end end diff --git a/lib/mime/types/loader.rb b/lib/mime/types/loader.rb index 74fa63f..d6450c5 100644 --- a/lib/mime/types/loader.rb +++ b/lib/mime/types/loader.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -# -*- ruby encoding: utf-8 -*- - ## module MIME; end diff --git a/lib/mime/types/logger.rb b/lib/mime/types/logger.rb index a065fc3..9765c34 100644 --- a/lib/mime/types/logger.rb +++ b/lib/mime/types/logger.rb @@ -1,7 +1,5 @@ # frozen_string_literal: true -# -*- ruby encoding: utf-8 -*- - require "logger" ## diff --git a/mime-types.gemspec b/mime-types.gemspec index adf51e9..92fa7cc 100644 --- a/mime-types.gemspec +++ b/mime-types.gemspec @@ -1,9 +1,9 @@ # -*- encoding: utf-8 -*- -# stub: mime-types 3.3.1 ruby lib +# stub: mime-types 3.4.0 ruby lib Gem::Specification.new do |s| s.name = "mime-types".freeze - s.version = "3.3.1" + s.version = "3.4.0" s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version= s.metadata = { "bug_tracker_uri" => "https://github.com/mime-types/ruby-mime-types/issues", "changelog_uri" => "https://github.com/mime-types/ruby-mime-types/blob/master/History.md", "homepage_uri" => "https://github.com/mime-types/ruby-mime-types/", "source_code_uri" => "https://github.com/mime-types/ruby-mime-types/" } if s.respond_to? :metadata= diff --git a/test/test_mime_type.rb b/test/test_mime_type.rb index 87cbfb8..5ef4aeb 100644 --- a/test/test_mime_type.rb +++ b/test/test_mime_type.rb @@ -461,12 +461,23 @@ describe MIME::Type do end describe "#to_json" do - let(:expected) { + let(:expected_1) { '{"content-type":"a/b","encoding":"base64","registered":false}' } + let(:expected_2) { + '{"content-type":"a/b","encoding":"base64","registered":true,"provisional":true}' + } it "converts to JSON when requested" do - assert_equal expected, mime_type("a/b").to_json + assert_equal expected_1, mime_type("a/b").to_json + end + + it "converts to JSON with provisional when requested" do + type = mime_type("a/b") do |t| + t.registered = true + t.provisional = true + end + assert_equal expected_2, type.to_json end end |