mime-types 3.2.1 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Code-of-Conduct.md +10 -10
- data/Contributing.md +82 -89
- data/History.md +178 -120
- data/Licence.md +3 -3
- data/README.rdoc +2 -8
- data/Rakefile +153 -139
- data/lib/mime/type/columnar.rb +4 -4
- data/lib/mime/type.rb +155 -94
- data/lib/mime/types/_columnar.rb +20 -20
- data/lib/mime/types/cache.rb +11 -11
- data/lib/mime/types/columnar.rb +1 -1
- data/lib/mime/types/container.rb +14 -13
- data/lib/mime/types/deprecations.rb +15 -13
- data/lib/mime/types/full.rb +2 -2
- data/lib/mime/types/loader.rb +28 -15
- data/lib/mime/types/logger.rb +4 -6
- data/lib/mime/types/registry.rb +9 -9
- data/lib/mime/types.rb +19 -16
- data/lib/mime-types.rb +1 -1
- data/test/minitest_helper.rb +7 -11
- data/test/test_mime_type.rb +269 -262
- data/test/test_mime_types.rb +72 -74
- data/test/test_mime_types_cache.rb +37 -39
- data/test/test_mime_types_class.rb +61 -63
- data/test/test_mime_types_lazy.rb +16 -18
- data/test/test_mime_types_loader.rb +14 -16
- metadata +22 -47
data/README.rdoc
CHANGED
@@ -4,6 +4,7 @@ home :: https://github.com/mime-types/ruby-mime-types/
|
|
4
4
|
code :: https://github.com/mime-types/ruby-mime-types/
|
5
5
|
bugs :: https://github.com/mime-types/ruby-mime-types/issues
|
6
6
|
rdoc :: http://rdoc.info/gems/mime-types/
|
7
|
+
clog :: https://github.com/mime-types/ruby-mime-types/blob/master/History.md
|
7
8
|
continuous integration :: {<img src="https://travis-ci.org/mime-types/ruby-mime-types.svg?branch=master" alt="Build Status" />}[https://travis-ci.org/mime-types/ruby-mime-types]
|
8
9
|
test coverage :: {<img src="https://coveralls.io/repos/mime-types/ruby-mime-types/badge.svg?branch=master&service=github" alt="Coverage Status" />}[https://coveralls.io/github/mime-types/ruby-mime-types?branch=master]
|
9
10
|
|
@@ -35,14 +36,6 @@ recommendations, the {IANA Media Types
|
|
35
36
|
registry}[https://www.iana.org/assignments/media-types/media-types.xhtml], and
|
36
37
|
user contributions. It conforms to RFCs 2045 and 2231.
|
37
38
|
|
38
|
-
=== mime-types 1.x End of Life
|
39
|
-
|
40
|
-
mime-types 1.x is no longer supported as of 2015-10-27.
|
41
|
-
|
42
|
-
=== mime-types 2.x End of Life
|
43
|
-
|
44
|
-
mime-types 2.x is no longer supported as of 2017-11-21.
|
45
|
-
|
46
39
|
=== mime-types 3.x
|
47
40
|
|
48
41
|
Users are encouraged to upgrade to mime-types 3.x as soon as is practical.
|
@@ -72,6 +65,7 @@ files). A MIME::Type stores the known information about one MIME type.
|
|
72
65
|
puts text.ascii? # => true
|
73
66
|
puts text.obsolete? # => false
|
74
67
|
puts text.registered? # => true
|
68
|
+
puts text.provisional? # => false
|
75
69
|
puts text.complete? # => true
|
76
70
|
|
77
71
|
puts text # => 'text/plain'
|
data/Rakefile
CHANGED
@@ -1,81 +1,108 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require "rubygems"
|
4
|
+
require "hoe"
|
5
|
+
require "rake/clean"
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
|
7
|
+
# This is required until https://github.com/seattlerb/hoe/issues/112 is fixed
|
8
|
+
class Hoe
|
9
|
+
def with_config
|
10
|
+
config = Hoe::DEFAULT_CONFIG
|
11
|
+
|
12
|
+
rc = File.expand_path("~/.hoerc")
|
13
|
+
homeconfig = load_config(rc)
|
14
|
+
config = config.merge(homeconfig)
|
15
|
+
|
16
|
+
localconfig = load_config(File.expand_path(File.join(Dir.pwd, ".hoerc")))
|
17
|
+
config = config.merge(localconfig)
|
18
|
+
|
19
|
+
yield config, rc
|
20
|
+
end
|
21
|
+
|
22
|
+
def load_config(name)
|
23
|
+
File.exist?(name) ? safe_load_yaml(name) : {}
|
24
|
+
end
|
25
|
+
|
26
|
+
def safe_load_yaml(name)
|
27
|
+
return safe_load_yaml_file(name) if YAML.respond_to?(:safe_load_file)
|
28
|
+
|
29
|
+
data = IO.binread(name)
|
30
|
+
YAML.safe_load(data, permitted_classes: [Regexp])
|
31
|
+
rescue
|
32
|
+
YAML.safe_load(data, [Regexp])
|
33
|
+
end
|
34
|
+
|
35
|
+
def safe_load_yaml_file(name)
|
36
|
+
YAML.safe_load_file(name, permitted_classes: [Regexp])
|
37
|
+
rescue
|
38
|
+
YAML.safe_load_file(name, [Regexp])
|
39
|
+
end
|
40
|
+
end
|
8
41
|
|
9
42
|
Hoe.plugin :doofus
|
10
43
|
Hoe.plugin :gemspec2
|
11
44
|
Hoe.plugin :git
|
12
45
|
Hoe.plugin :minitest
|
13
|
-
Hoe.plugin :
|
14
|
-
Hoe.plugin :email unless ENV['CI'] or ENV['TRAVIS']
|
46
|
+
Hoe.plugin :email unless ENV["CI"]
|
15
47
|
|
16
|
-
spec = Hoe.spec
|
17
|
-
developer(
|
48
|
+
spec = Hoe.spec "mime-types" do
|
49
|
+
developer("Austin Ziegler", "halostatue@gmail.com")
|
18
50
|
self.need_tar = true
|
19
51
|
|
20
|
-
require_ruby_version
|
21
|
-
|
22
|
-
self.history_file =
|
23
|
-
self.readme_file =
|
24
|
-
|
25
|
-
license
|
26
|
-
|
27
|
-
extra_deps << [
|
28
|
-
|
29
|
-
extra_dev_deps << [
|
30
|
-
extra_dev_deps << [
|
31
|
-
extra_dev_deps << [
|
32
|
-
extra_dev_deps << [
|
33
|
-
extra_dev_deps << [
|
34
|
-
extra_dev_deps << [
|
35
|
-
extra_dev_deps << [
|
36
|
-
extra_dev_deps << [
|
37
|
-
extra_dev_deps << [
|
38
|
-
extra_dev_deps << [
|
39
|
-
extra_dev_deps << [
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0')
|
44
|
-
extra_dev_deps << ['simplecov', '~> 0.7']
|
45
|
-
# if ENV['CI'] or ENV['TRAVIS']
|
46
|
-
# extra_dev_deps << ['coveralls', '~> 0.8']
|
47
|
-
# end
|
52
|
+
require_ruby_version ">= 2.0"
|
53
|
+
|
54
|
+
self.history_file = "History.md"
|
55
|
+
self.readme_file = "README.rdoc"
|
56
|
+
|
57
|
+
license "MIT"
|
58
|
+
|
59
|
+
extra_deps << ["mime-types-data", "~> 3.2015"]
|
60
|
+
|
61
|
+
extra_dev_deps << ["hoe-doofus", "~> 1.0"]
|
62
|
+
extra_dev_deps << ["hoe-gemspec2", "~> 1.1"]
|
63
|
+
extra_dev_deps << ["hoe-git", "~> 1.6"]
|
64
|
+
extra_dev_deps << ["hoe-rubygems", "~> 1.0"]
|
65
|
+
extra_dev_deps << ["standard", "~> 1.0"]
|
66
|
+
extra_dev_deps << ["minitest", "~> 5.4"]
|
67
|
+
extra_dev_deps << ["minitest-autotest", "~> 1.0"]
|
68
|
+
extra_dev_deps << ["minitest-focus", "~> 1.0"]
|
69
|
+
extra_dev_deps << ["minitest-bonus-assertions", "~> 3.0"]
|
70
|
+
extra_dev_deps << ["minitest-hooks", "~> 1.4"]
|
71
|
+
extra_dev_deps << ["rake", ">= 10.0", "< 14.0"]
|
72
|
+
|
73
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.0")
|
74
|
+
extra_dev_deps << ["simplecov", "~> 0.7"]
|
48
75
|
end
|
49
76
|
end
|
50
77
|
|
51
78
|
namespace :benchmark do
|
52
79
|
task :support do
|
53
|
-
%w
|
80
|
+
%w[lib support].each { |path|
|
54
81
|
$LOAD_PATH.unshift(File.join(Rake.application.original_dir, path))
|
55
82
|
}
|
56
83
|
end
|
57
84
|
|
58
|
-
desc
|
59
|
-
task :load, [
|
60
|
-
require
|
85
|
+
desc "Benchmark Load Times"
|
86
|
+
task :load, [:repeats] => "benchmark:support" do |_, args|
|
87
|
+
require "benchmarks/load"
|
61
88
|
Benchmarks::Load.report(
|
62
|
-
File.join(Rake.application.original_dir,
|
89
|
+
File.join(Rake.application.original_dir, "lib"),
|
63
90
|
args.repeats
|
64
91
|
)
|
65
92
|
end
|
66
93
|
|
67
|
-
desc
|
68
|
-
task :allocations, [
|
69
|
-
require
|
94
|
+
desc "Allocation counts"
|
95
|
+
task :allocations, [:top_x, :mime_types_only] => "benchmark:support" do |_, args|
|
96
|
+
require "benchmarks/load_allocations"
|
70
97
|
Benchmarks::LoadAllocations.report(
|
71
98
|
top_x: args.top_x,
|
72
99
|
mime_types_only: args.mime_types_only
|
73
100
|
)
|
74
101
|
end
|
75
102
|
|
76
|
-
desc
|
77
|
-
task
|
78
|
-
require
|
103
|
+
desc "Columnar allocation counts"
|
104
|
+
task "allocations:columnar", [:top_x, :mime_types_only] => "benchmark:support" do |_, args|
|
105
|
+
require "benchmarks/load_allocations"
|
79
106
|
Benchmarks::LoadAllocations.report(
|
80
107
|
columnar: true,
|
81
108
|
top_x: args.top_x,
|
@@ -83,9 +110,9 @@ namespace :benchmark do
|
|
83
110
|
)
|
84
111
|
end
|
85
112
|
|
86
|
-
desc
|
87
|
-
task
|
88
|
-
require
|
113
|
+
desc "Columnar allocation counts (full load)"
|
114
|
+
task "allocations:columnar:full", [:top_x, :mime_types_only] => "benchmark:support" do |_, args|
|
115
|
+
require "benchmarks/load_allocations"
|
89
116
|
Benchmarks::LoadAllocations.report(
|
90
117
|
columnar: true,
|
91
118
|
top_x: args.top_x,
|
@@ -94,90 +121,102 @@ namespace :benchmark do
|
|
94
121
|
)
|
95
122
|
end
|
96
123
|
|
97
|
-
desc
|
98
|
-
task
|
99
|
-
require
|
124
|
+
desc "Memory profiler"
|
125
|
+
task :memory, [:top_x, :mime_types_only] => "benchmark:support" do |_, args|
|
126
|
+
require "benchmarks/memory_profiler"
|
127
|
+
Benchmarks::ProfileMemory.report(
|
128
|
+
mime_types_only: args.mime_types_only,
|
129
|
+
top_x: args.top_x
|
130
|
+
)
|
131
|
+
end
|
132
|
+
|
133
|
+
desc "Columnar memory profiler"
|
134
|
+
task "memory:columnar", [:top_x, :mime_types_only] => "benchmark:support" do |_, args|
|
135
|
+
require "benchmarks/memory_profiler"
|
136
|
+
Benchmarks::ProfileMemory.report(
|
137
|
+
columnar: true,
|
138
|
+
mime_types_only: args.mime_types_only,
|
139
|
+
top_x: args.top_x
|
140
|
+
)
|
141
|
+
end
|
142
|
+
|
143
|
+
desc "Columnar allocation counts (full load)"
|
144
|
+
task "memory:columnar:full", [:top_x, :mime_types_only] => "benchmark:support" do |_, args|
|
145
|
+
require "benchmarks/memory_profiler"
|
146
|
+
Benchmarks::ProfileMemory.report(
|
147
|
+
columnar: true,
|
148
|
+
full: true,
|
149
|
+
top_x: args.top_x,
|
150
|
+
mime_types_only: args.mime_types_only
|
151
|
+
)
|
152
|
+
end
|
153
|
+
|
154
|
+
desc "Object counts"
|
155
|
+
task objects: "benchmark:support" do
|
156
|
+
require "benchmarks/object_counts"
|
100
157
|
Benchmarks::ObjectCounts.report
|
101
158
|
end
|
102
159
|
|
103
|
-
desc
|
104
|
-
task
|
105
|
-
require
|
160
|
+
desc "Columnar object counts"
|
161
|
+
task "objects:columnar" => "benchmark:support" do
|
162
|
+
require "benchmarks/object_counts"
|
106
163
|
Benchmarks::ObjectCounts.report(columnar: true)
|
107
164
|
end
|
108
165
|
|
109
|
-
desc
|
110
|
-
task
|
111
|
-
require
|
166
|
+
desc "Columnar object counts (full load)"
|
167
|
+
task "objects:columnar:full" => "benchmark:support" do
|
168
|
+
require "benchmarks/object_counts"
|
112
169
|
Benchmarks::ObjectCounts.report(columnar: true, full: true)
|
113
170
|
end
|
114
171
|
end
|
115
172
|
|
116
173
|
namespace :profile do
|
117
|
-
directory
|
174
|
+
directory "tmp/profile"
|
118
175
|
|
119
|
-
CLEAN.add
|
176
|
+
CLEAN.add "tmp"
|
120
177
|
|
121
178
|
def ruby_prof(script)
|
122
|
-
require
|
123
|
-
output = Pathname(
|
179
|
+
require "pathname"
|
180
|
+
output = Pathname("tmp/profile").join(script)
|
124
181
|
output.mkpath
|
125
|
-
script = Pathname(
|
182
|
+
script = Pathname("support/profile").join("#{script}.rb")
|
126
183
|
|
127
184
|
args = [
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
185
|
+
"-W0",
|
186
|
+
"-Ilib",
|
187
|
+
"-S", "ruby-prof",
|
188
|
+
"-R", "mime/types",
|
189
|
+
"-s", "self",
|
190
|
+
"-p", "multi",
|
191
|
+
"-f", output.to_s,
|
135
192
|
script.to_s
|
136
193
|
]
|
137
|
-
ruby args.join(
|
194
|
+
ruby args.join(" ")
|
138
195
|
end
|
139
196
|
|
140
|
-
task full:
|
141
|
-
ruby_prof
|
197
|
+
task full: "tmp/profile" do
|
198
|
+
ruby_prof "full"
|
142
199
|
end
|
143
200
|
|
144
201
|
task columnar: :support do
|
145
|
-
ruby_prof
|
202
|
+
ruby_prof "columnar"
|
146
203
|
end
|
147
204
|
|
148
|
-
task
|
149
|
-
ruby_prof
|
205
|
+
task "columnar:full" => :support do
|
206
|
+
ruby_prof "columnar_full"
|
150
207
|
end
|
151
208
|
end
|
152
209
|
|
153
|
-
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new(
|
210
|
+
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.0")
|
154
211
|
namespace :test do
|
155
|
-
|
156
|
-
# an earlier version of mime-types.
|
157
|
-
# if ENV['CI'] or ENV['TRAVIS']
|
158
|
-
# task :coveralls do
|
159
|
-
# spec.test_prelude = [
|
160
|
-
# 'require "psych"',
|
161
|
-
# 'require "simplecov"',
|
162
|
-
# 'require "coveralls"',
|
163
|
-
# 'SimpleCov.formatter = Coveralls::SimpleCov::Formatter',
|
164
|
-
# 'SimpleCov.start("test_frameworks") { command_name "Minitest" }',
|
165
|
-
# 'gem "minitest"'
|
166
|
-
# ].join('; ')
|
167
|
-
# Rake::Task['test'].execute
|
168
|
-
# end
|
169
|
-
|
170
|
-
# Rake::Task['travis'].prerequisites.replace(%w(test:coveralls))
|
171
|
-
# end
|
172
|
-
|
173
|
-
desc 'Run test coverage'
|
212
|
+
desc "Run test coverage"
|
174
213
|
task :coverage do
|
175
214
|
spec.test_prelude = [
|
176
215
|
'require "simplecov"',
|
177
216
|
'SimpleCov.start("test_frameworks") { command_name "Minitest" }',
|
178
217
|
'gem "minitest"'
|
179
|
-
].join(
|
180
|
-
Rake::Task[
|
218
|
+
].join("; ")
|
219
|
+
Rake::Task["test"].execute
|
181
220
|
end
|
182
221
|
end
|
183
222
|
end
|
@@ -185,68 +224,43 @@ end
|
|
185
224
|
namespace :convert do
|
186
225
|
namespace :docs do
|
187
226
|
task :setup do
|
188
|
-
gem
|
189
|
-
require
|
227
|
+
gem "rdoc"
|
228
|
+
require "rdoc/rdoc"
|
190
229
|
@doc_converter ||= RDoc::Markup::ToMarkdown.new
|
191
230
|
end
|
192
231
|
|
193
|
-
FileList[
|
232
|
+
FileList["*.rdoc"].each do |name|
|
194
233
|
rdoc = name
|
195
|
-
mark = "#{File.basename(name,
|
234
|
+
mark = "#{File.basename(name, ".rdoc")}.md"
|
196
235
|
|
197
|
-
file mark => [
|
236
|
+
file mark => [rdoc, :setup] do |t|
|
198
237
|
puts "#{rdoc} => #{mark}"
|
199
|
-
File.open(t.name,
|
238
|
+
File.open(t.name, "wb") { |target|
|
200
239
|
target.write @doc_converter.convert(IO.read(t.prerequisites.first))
|
201
240
|
}
|
202
241
|
end
|
203
242
|
|
204
243
|
CLEAN.add mark
|
205
244
|
|
206
|
-
task run: [
|
245
|
+
task run: [mark]
|
207
246
|
end
|
208
247
|
end
|
209
248
|
|
210
|
-
desc
|
211
|
-
task docs:
|
249
|
+
desc "Convert documentation from RDoc to Markdown"
|
250
|
+
task docs: "convert:docs:run"
|
212
251
|
end
|
213
252
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
def rubygems_get(gem_name: '', endpoint: '')
|
219
|
-
path = File.join('/api/v1/gems/', gem_name, endpoint).chomp('/') + '.json'
|
220
|
-
Net::HTTP.start('rubygems.org', use_ssl: true) do |http|
|
221
|
-
JSON.parse(http.get(path).body)
|
222
|
-
end
|
223
|
-
end
|
224
|
-
|
225
|
-
results = rubygems_get(
|
226
|
-
gem_name: 'mime-types',
|
227
|
-
endpoint: 'reverse_dependencies'
|
228
|
-
)
|
229
|
-
|
230
|
-
weighted_results = {}
|
231
|
-
results.each do |name|
|
232
|
-
begin
|
233
|
-
weighted_results[name] = rubygems_get(gem_name: name)['downloads']
|
234
|
-
rescue => e
|
235
|
-
puts "#{name} #{e.message}"
|
236
|
-
end
|
237
|
-
end
|
238
|
-
|
239
|
-
weighted_results.sort { |(_k1, v1), (_k2, v2)|
|
240
|
-
v2 <=> v1
|
241
|
-
}.first(args.number || 50).each_with_index do |(k, v), i|
|
242
|
-
puts "#{i}) #{k}: #{v}"
|
253
|
+
namespace :deps do
|
254
|
+
task :top, [:number] => "benchmark:support" do |_, args|
|
255
|
+
require "deps"
|
256
|
+
Deps.run(args)
|
243
257
|
end
|
244
258
|
end
|
245
259
|
|
246
260
|
task :console do
|
247
|
-
arguments = %w
|
261
|
+
arguments = %w[irb]
|
248
262
|
arguments.push(*spec.spec.require_paths.map { |dir| "-I#{dir}" })
|
249
|
-
arguments.push("-r#{spec.spec.name.gsub(
|
263
|
+
arguments.push("-r#{spec.spec.name.gsub("-", File::SEPARATOR)}")
|
250
264
|
unless system(*arguments)
|
251
265
|
error "Command failed: #{show_command}"
|
252
266
|
abort
|
data/lib/mime/type/columnar.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require
|
3
|
+
require "mime/type"
|
4
4
|
|
5
5
|
# A version of MIME::Type that works hand-in-hand with a MIME::Types::Columnar
|
6
6
|
# container to load data by columns.
|
@@ -20,7 +20,7 @@ class MIME::Type::Columnar < MIME::Type
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def self.column(*methods, file: nil) # :nodoc:
|
23
|
-
file
|
23
|
+
file ||= methods.first
|
24
24
|
|
25
25
|
file_method = :"load_#{file}"
|
26
26
|
methods.each do |m|
|
@@ -35,8 +35,8 @@ class MIME::Type::Columnar < MIME::Type
|
|
35
35
|
column :encoding, :encoding=
|
36
36
|
column :docs, :docs=
|
37
37
|
column :preferred_extension, :preferred_extension=
|
38
|
-
column :obsolete, :obsolete=, :obsolete?, :registered, :registered=,
|
39
|
-
:
|
38
|
+
column :obsolete, :obsolete=, :obsolete?, :registered, :registered=, :registered?, :signature, :signature=,
|
39
|
+
:signature?, :provisional, :provisional=, :provisional?, file: "flags"
|
40
40
|
column :xrefs, :xrefs=, :xref_urls
|
41
41
|
column :use_instead, :use_instead=
|
42
42
|
|