summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Ziegler <austin@zieglers.ca>2021-03-24 14:30:47 -0400
committerAustin Ziegler <austin@zieglers.ca>2021-11-15 11:08:41 -0500
commitf1470505047a4f2c840e1f886d539b6bdc88a570 (patch)
tree26291be3d1bf84700dcf406c2a0cf75d64601e29
parent6c8324d2396e7698296bbecf376a4a647b258057 (diff)
downloadmime-types-additional-columns.tar.gz
IANA Provisional Registration Supportadditional-columns
- Added a new field to `MIME::Type` for checking provisional registrations from IANA.
-rw-r--r--Gemfile4
-rw-r--r--History.md7
-rw-r--r--README.rdoc1
-rw-r--r--Rakefile3
-rw-r--r--lib/mime/type.rb15
-rw-r--r--lib/mime/type/columnar.rb4
-rw-r--r--lib/mime/types.rb1
-rw-r--r--lib/mime/types/_columnar.rb1
-rw-r--r--lib/mime/types/loader.rb2
-rw-r--r--lib/mime/types/logger.rb2
-rw-r--r--mime-types.gemspec4
-rw-r--r--test/test_mime_type.rb15
12 files changed, 42 insertions, 17 deletions
diff --git a/Gemfile b/Gemfile
index 0cf04db..76ce8fd 100644
--- a/Gemfile
+++ b/Gemfile
@@ -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/"
diff --git a/History.md b/History.md
index e73a7a6..9f22814 100644
--- a/History.md
+++ b/History.md
@@ -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'
diff --git a/Rakefile b/Rakefile
index bf37a6a..b943857 100644
--- a/Rakefile
+++ b/Rakefile
@@ -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