mime-types 3.3.1 → 3.7.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/CHANGELOG.md +413 -0
- data/CODE_OF_CONDUCT.md +128 -0
- data/CONTRIBUTING.md +93 -0
- data/CONTRIBUTORS.md +52 -0
- data/{Licence.md → LICENCE.md} +11 -12
- data/Manifest.txt +8 -5
- data/README.md +200 -0
- data/Rakefile +118 -201
- data/SECURITY.md +7 -0
- data/lib/mime/type/columnar.rb +17 -4
- data/lib/mime/type.rb +293 -134
- data/lib/mime/types/_columnar.rb +72 -24
- data/lib/mime/types/cache.rb +8 -12
- data/lib/mime/types/columnar.rb +1 -1
- data/lib/mime/types/container.rb +49 -19
- data/lib/mime/types/deprecations.rb +51 -27
- data/lib/mime/types/full.rb +2 -2
- data/lib/mime/types/loader.rb +29 -16
- data/lib/mime/types/logger.rb +38 -9
- data/lib/mime/types/registry.rb +10 -8
- data/lib/mime/types/version.rb +14 -0
- data/lib/mime/types.rb +45 -33
- data/lib/mime-types.rb +1 -1
- data/test/minitest_helper.rb +6 -9
- data/test/test_mime_type.rb +337 -288
- data/test/test_mime_types.rb +79 -75
- data/test/test_mime_types_cache.rb +38 -38
- data/test/test_mime_types_class.rb +70 -59
- data/test/test_mime_types_lazy.rb +16 -16
- data/test/test_mime_types_loader.rb +14 -14
- metadata +54 -122
- data/Code-of-Conduct.md +0 -73
- data/Contributing.md +0 -143
- data/History.md +0 -240
- data/README.rdoc +0 -193
data/Rakefile
CHANGED
|
@@ -1,109 +1,102 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
|
|
7
|
-
Hoe.plugin :
|
|
8
|
-
Hoe.plugin :
|
|
9
|
-
|
|
10
|
-
Hoe.
|
|
11
|
-
Hoe.
|
|
12
|
-
Hoe.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
license
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
1
|
+
require "rubygems"
|
|
2
|
+
require "hoe"
|
|
3
|
+
require "rake/clean"
|
|
4
|
+
require "minitest"
|
|
5
|
+
require "minitest/test_task"
|
|
6
|
+
|
|
7
|
+
Hoe.plugin :halostatue
|
|
8
|
+
Hoe.plugin :rubygems
|
|
9
|
+
|
|
10
|
+
Hoe.plugins.delete :debug
|
|
11
|
+
Hoe.plugins.delete :newb
|
|
12
|
+
Hoe.plugins.delete :publish
|
|
13
|
+
Hoe.plugins.delete :signing
|
|
14
|
+
Hoe.plugins.delete :test
|
|
15
|
+
|
|
16
|
+
spec = Hoe.spec "mime-types" do
|
|
17
|
+
developer("Austin Ziegler", "halostatue@gmail.com")
|
|
18
|
+
|
|
19
|
+
self.trusted_release = ENV["rubygems_release_gem"] == "true"
|
|
20
|
+
|
|
21
|
+
require_ruby_version ">= 2.0"
|
|
22
|
+
|
|
23
|
+
license "MIT"
|
|
24
|
+
|
|
25
|
+
spec_extras[:metadata] = ->(val) {
|
|
26
|
+
val.merge!({"rubygems_mfa_required" => "true"})
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
extra_deps << ["mime-types-data", "~> 3.2025", ">= 3.2025.0507"]
|
|
30
|
+
extra_deps << ["logger", ">= 0"]
|
|
31
|
+
|
|
32
|
+
extra_dev_deps << ["hoe", "~> 4.0"]
|
|
33
|
+
extra_dev_deps << ["hoe-halostatue", "~> 2.0"]
|
|
34
|
+
extra_dev_deps << ["hoe-rubygems", "~> 1.0"]
|
|
35
|
+
extra_dev_deps << ["minitest", "~> 5.0"]
|
|
36
|
+
extra_dev_deps << ["minitest-autotest", "~> 1.0"]
|
|
37
|
+
extra_dev_deps << ["minitest-focus", "~> 1.0"]
|
|
38
|
+
extra_dev_deps << ["minitest-hooks", "~> 1.4"]
|
|
39
|
+
extra_dev_deps << ["rake", ">= 10.0", "< 14"]
|
|
40
|
+
extra_dev_deps << ["rdoc", ">= 0.0"]
|
|
41
|
+
extra_dev_deps << ["standard", "~> 1.0"]
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
Minitest::TestTask.create :test
|
|
45
|
+
Minitest::TestTask.create :coverage do |t|
|
|
46
|
+
formatters = <<-RUBY.split($/).join(" ")
|
|
47
|
+
SimpleCov::Formatter::MultiFormatter.new([
|
|
48
|
+
SimpleCov::Formatter::HTMLFormatter,
|
|
49
|
+
SimpleCov::Formatter::LcovFormatter,
|
|
50
|
+
SimpleCov::Formatter::SimpleFormatter
|
|
51
|
+
])
|
|
52
|
+
RUBY
|
|
53
|
+
t.test_prelude = <<-RUBY.split($/).join("; ")
|
|
54
|
+
require "simplecov"
|
|
55
|
+
require "simplecov-lcov"
|
|
56
|
+
|
|
57
|
+
SimpleCov::Formatter::LcovFormatter.config do |config|
|
|
58
|
+
config.report_with_single_file = true
|
|
59
|
+
config.lcov_file_name = "lcov.info"
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
SimpleCov.start "test_frameworks" do
|
|
63
|
+
enable_coverage :branch
|
|
64
|
+
primary_coverage :branch
|
|
65
|
+
formatter #{formatters}
|
|
66
|
+
end
|
|
67
|
+
RUBY
|
|
47
68
|
end
|
|
48
69
|
|
|
70
|
+
task default: :test
|
|
71
|
+
|
|
49
72
|
namespace :benchmark do
|
|
50
73
|
task :support do
|
|
51
|
-
%w
|
|
74
|
+
%w[lib support].each { |path|
|
|
52
75
|
$LOAD_PATH.unshift(File.join(Rake.application.original_dir, path))
|
|
53
76
|
}
|
|
54
77
|
end
|
|
55
78
|
|
|
56
|
-
desc
|
|
57
|
-
task :load, [:repeats] =>
|
|
58
|
-
require
|
|
79
|
+
desc "Benchmark Load Times"
|
|
80
|
+
task :load, [:repeats] => "benchmark:support" do |_, args|
|
|
81
|
+
require "benchmarks/load"
|
|
59
82
|
Benchmarks::Load.report(
|
|
60
|
-
File.join(Rake.application.original_dir,
|
|
83
|
+
File.join(Rake.application.original_dir, "lib"),
|
|
61
84
|
args.repeats
|
|
62
85
|
)
|
|
63
86
|
end
|
|
64
87
|
|
|
65
|
-
desc
|
|
66
|
-
task :
|
|
67
|
-
require
|
|
68
|
-
Benchmarks::LoadAllocations.report(
|
|
69
|
-
top_x: args.top_x,
|
|
70
|
-
mime_types_only: args.mime_types_only
|
|
71
|
-
)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
desc 'Columnar allocation counts'
|
|
75
|
-
task 'allocations:columnar', [:top_x, :mime_types_only] => 'benchmark:support' do |_, args|
|
|
76
|
-
require 'benchmarks/load_allocations'
|
|
77
|
-
Benchmarks::LoadAllocations.report(
|
|
78
|
-
columnar: true,
|
|
79
|
-
top_x: args.top_x,
|
|
80
|
-
mime_types_only: args.mime_types_only
|
|
81
|
-
)
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
desc 'Columnar allocation counts (full load)'
|
|
85
|
-
task 'allocations:columnar:full', [:top_x, :mime_types_only] => 'benchmark:support' do |_, args|
|
|
86
|
-
require 'benchmarks/load_allocations'
|
|
87
|
-
Benchmarks::LoadAllocations.report(
|
|
88
|
-
columnar: true,
|
|
89
|
-
top_x: args.top_x,
|
|
90
|
-
mime_types_only: args.mime_types_only,
|
|
91
|
-
full: true
|
|
92
|
-
)
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
desc 'Memory profiler'
|
|
96
|
-
task :memory, [:top_x, :mime_types_only] => 'benchmark:support' do |_, args|
|
|
97
|
-
require 'benchmarks/memory_profiler'
|
|
88
|
+
desc "Memory profiler"
|
|
89
|
+
task :memory, [:top_x, :mime_types_only] => "benchmark:support" do |_, args|
|
|
90
|
+
require "benchmarks/profile_memory"
|
|
98
91
|
Benchmarks::ProfileMemory.report(
|
|
99
92
|
mime_types_only: args.mime_types_only,
|
|
100
93
|
top_x: args.top_x
|
|
101
94
|
)
|
|
102
95
|
end
|
|
103
96
|
|
|
104
|
-
desc
|
|
105
|
-
task
|
|
106
|
-
require
|
|
97
|
+
desc "Columnar memory profiler"
|
|
98
|
+
task "memory:columnar", [:top_x, :mime_types_only] => "benchmark:support" do |_, args|
|
|
99
|
+
require "benchmarks/profile_memory"
|
|
107
100
|
Benchmarks::ProfileMemory.report(
|
|
108
101
|
columnar: true,
|
|
109
102
|
mime_types_only: args.mime_types_only,
|
|
@@ -111,9 +104,9 @@ namespace :benchmark do
|
|
|
111
104
|
)
|
|
112
105
|
end
|
|
113
106
|
|
|
114
|
-
desc
|
|
115
|
-
task
|
|
116
|
-
require
|
|
107
|
+
desc "Columnar allocation counts (full load)"
|
|
108
|
+
task "memory:columnar:full", [:top_x, :mime_types_only] => "benchmark:support" do |_, args|
|
|
109
|
+
require "benchmarks/profile_memory"
|
|
117
110
|
Benchmarks::ProfileMemory.report(
|
|
118
111
|
columnar: true,
|
|
119
112
|
full: true,
|
|
@@ -122,111 +115,57 @@ namespace :benchmark do
|
|
|
122
115
|
)
|
|
123
116
|
end
|
|
124
117
|
|
|
125
|
-
desc
|
|
126
|
-
task objects:
|
|
127
|
-
require
|
|
118
|
+
desc "Object counts"
|
|
119
|
+
task objects: "benchmark:support" do
|
|
120
|
+
require "benchmarks/object_counts"
|
|
128
121
|
Benchmarks::ObjectCounts.report
|
|
129
122
|
end
|
|
130
123
|
|
|
131
|
-
desc
|
|
132
|
-
task
|
|
133
|
-
require
|
|
124
|
+
desc "Columnar object counts"
|
|
125
|
+
task "objects:columnar" => "benchmark:support" do
|
|
126
|
+
require "benchmarks/object_counts"
|
|
134
127
|
Benchmarks::ObjectCounts.report(columnar: true)
|
|
135
128
|
end
|
|
136
129
|
|
|
137
|
-
desc
|
|
138
|
-
task
|
|
139
|
-
require
|
|
130
|
+
desc "Columnar object counts (full load)"
|
|
131
|
+
task "objects:columnar:full" => "benchmark:support" do
|
|
132
|
+
require "benchmarks/object_counts"
|
|
140
133
|
Benchmarks::ObjectCounts.report(columnar: true, full: true)
|
|
141
134
|
end
|
|
142
135
|
end
|
|
143
136
|
|
|
144
137
|
namespace :profile do
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
def ruby_prof(script)
|
|
150
|
-
require 'pathname'
|
|
151
|
-
output = Pathname('tmp/profile').join(script)
|
|
152
|
-
output.mkpath
|
|
153
|
-
script = Pathname('support/profile').join("#{script}.rb")
|
|
154
|
-
|
|
155
|
-
args = [
|
|
156
|
-
'-W0',
|
|
157
|
-
'-Ilib',
|
|
158
|
-
'-S', 'ruby-prof',
|
|
159
|
-
'-R', 'mime/types',
|
|
160
|
-
'-s', 'self',
|
|
161
|
-
'-p', 'multi',
|
|
162
|
-
'-f', output.to_s,
|
|
163
|
-
script.to_s
|
|
164
|
-
]
|
|
165
|
-
ruby args.join(' ')
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
task full: 'tmp/profile' do
|
|
169
|
-
ruby_prof 'full'
|
|
138
|
+
task full: "benchmark:support" do
|
|
139
|
+
require "profile"
|
|
140
|
+
profile_full
|
|
170
141
|
end
|
|
171
142
|
|
|
172
|
-
task columnar: :support do
|
|
173
|
-
|
|
143
|
+
task columnar: "benchmark:support" do
|
|
144
|
+
require "profile"
|
|
145
|
+
profile_columnar
|
|
174
146
|
end
|
|
175
147
|
|
|
176
|
-
task
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0')
|
|
182
|
-
namespace :test do
|
|
183
|
-
# Coveralls needs to be disabled for now because it transitively depends on
|
|
184
|
-
# an earlier version of mime-types.
|
|
185
|
-
# if ENV['CI'] or ENV['TRAVIS']
|
|
186
|
-
# task :coveralls do
|
|
187
|
-
# spec.test_prelude = [
|
|
188
|
-
# 'require "psych"',
|
|
189
|
-
# 'require "simplecov"',
|
|
190
|
-
# 'require "coveralls"',
|
|
191
|
-
# 'SimpleCov.formatter = Coveralls::SimpleCov::Formatter',
|
|
192
|
-
# 'SimpleCov.start("test_frameworks") { command_name "Minitest" }',
|
|
193
|
-
# 'gem "minitest"'
|
|
194
|
-
# ].join('; ')
|
|
195
|
-
# Rake::Task['test'].execute
|
|
196
|
-
# end
|
|
197
|
-
|
|
198
|
-
# Rake::Task['travis'].prerequisites.replace(%w(test:coveralls))
|
|
199
|
-
# end
|
|
200
|
-
|
|
201
|
-
desc 'Run test coverage'
|
|
202
|
-
task :coverage do
|
|
203
|
-
spec.test_prelude = [
|
|
204
|
-
'require "simplecov"',
|
|
205
|
-
'SimpleCov.start("test_frameworks") { command_name "Minitest" }',
|
|
206
|
-
'gem "minitest"'
|
|
207
|
-
].join('; ')
|
|
208
|
-
Rake::Task['test'].execute
|
|
209
|
-
end
|
|
148
|
+
task "columnar:full" => "benchmark:support" do
|
|
149
|
+
require "profile"
|
|
150
|
+
profile_columnar_full
|
|
210
151
|
end
|
|
211
152
|
end
|
|
212
153
|
|
|
213
154
|
namespace :convert do
|
|
214
155
|
namespace :docs do
|
|
215
156
|
task :setup do
|
|
216
|
-
gem
|
|
217
|
-
require
|
|
157
|
+
gem "rdoc"
|
|
158
|
+
require "rdoc/rdoc"
|
|
218
159
|
@doc_converter ||= RDoc::Markup::ToMarkdown.new
|
|
219
160
|
end
|
|
220
161
|
|
|
221
|
-
FileList[
|
|
162
|
+
FileList["*.rdoc"].each do |name|
|
|
222
163
|
rdoc = name
|
|
223
|
-
mark = "#{File.basename(name,
|
|
164
|
+
mark = "#{File.basename(name, ".rdoc")}.md"
|
|
224
165
|
|
|
225
166
|
file mark => [rdoc, :setup] do |t|
|
|
226
167
|
puts "#{rdoc} => #{mark}"
|
|
227
|
-
File.
|
|
228
|
-
target.write @doc_converter.convert(IO.read(t.prerequisites.first))
|
|
229
|
-
}
|
|
168
|
+
File.binwrite(t.name, @doc_converter.convert(IO.read(t.prerequisites.first)))
|
|
230
169
|
end
|
|
231
170
|
|
|
232
171
|
CLEAN.add mark
|
|
@@ -235,50 +174,28 @@ namespace :convert do
|
|
|
235
174
|
end
|
|
236
175
|
end
|
|
237
176
|
|
|
238
|
-
desc
|
|
239
|
-
task docs:
|
|
177
|
+
desc "Convert documentation from RDoc to Markdown"
|
|
178
|
+
task docs: "convert:docs:run"
|
|
240
179
|
end
|
|
241
180
|
|
|
242
|
-
task
|
|
243
|
-
require
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
def rubygems_get(gem_name: '', endpoint: '')
|
|
247
|
-
path = File.join('/api/v1/gems/', gem_name, endpoint).chomp('/') + '.json'
|
|
248
|
-
Net::HTTP.start('rubygems.org', use_ssl: true) do |http|
|
|
249
|
-
JSON.parse(http.get(path).body)
|
|
250
|
-
end
|
|
251
|
-
end
|
|
252
|
-
|
|
253
|
-
results = rubygems_get(
|
|
254
|
-
gem_name: 'mime-types',
|
|
255
|
-
endpoint: 'reverse_dependencies'
|
|
256
|
-
)
|
|
257
|
-
|
|
258
|
-
weighted_results = {}
|
|
259
|
-
results.each do |name|
|
|
260
|
-
begin
|
|
261
|
-
weighted_results[name] = rubygems_get(gem_name: name)['downloads']
|
|
262
|
-
rescue => e
|
|
263
|
-
puts "#{name} #{e.message}"
|
|
264
|
-
end
|
|
265
|
-
end
|
|
181
|
+
task :version do
|
|
182
|
+
require "mime/types/version"
|
|
183
|
+
puts MIME::Types::VERSION
|
|
184
|
+
end
|
|
266
185
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
186
|
+
namespace :deps do
|
|
187
|
+
task :top, [:number] => "benchmark:support" do |_, args|
|
|
188
|
+
require "deps"
|
|
189
|
+
Deps.run(args)
|
|
271
190
|
end
|
|
272
191
|
end
|
|
273
192
|
|
|
274
193
|
task :console do
|
|
275
|
-
arguments = %w
|
|
194
|
+
arguments = %w[irb]
|
|
276
195
|
arguments.push(*spec.spec.require_paths.map { |dir| "-I#{dir}" })
|
|
277
|
-
arguments.push("-r#{spec.spec.name.gsub(
|
|
196
|
+
arguments.push("-r#{spec.spec.name.gsub("-", File::SEPARATOR)}")
|
|
278
197
|
unless system(*arguments)
|
|
279
198
|
error "Command failed: #{show_command}"
|
|
280
199
|
abort
|
|
281
200
|
end
|
|
282
201
|
end
|
|
283
|
-
|
|
284
|
-
# vim: syntax=ruby
|
data/SECURITY.md
ADDED
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.
|
|
@@ -15,8 +15,10 @@ require 'mime/type'
|
|
|
15
15
|
class MIME::Type::Columnar < MIME::Type
|
|
16
16
|
def initialize(container, content_type, extensions) # :nodoc:
|
|
17
17
|
@container = container
|
|
18
|
+
@__priority_penalty = nil
|
|
18
19
|
self.content_type = content_type
|
|
19
|
-
|
|
20
|
+
@extensions = Set[*Array(extensions).flatten.compact].freeze
|
|
21
|
+
clear_sort_priority
|
|
20
22
|
end
|
|
21
23
|
|
|
22
24
|
def self.column(*methods, file: nil) # :nodoc:
|
|
@@ -35,8 +37,8 @@ class MIME::Type::Columnar < MIME::Type
|
|
|
35
37
|
column :encoding, :encoding=
|
|
36
38
|
column :docs, :docs=
|
|
37
39
|
column :preferred_extension, :preferred_extension=
|
|
38
|
-
column :obsolete, :obsolete=, :obsolete?, :registered, :registered=,
|
|
39
|
-
|
|
40
|
+
column :obsolete, :obsolete=, :obsolete?, :registered, :registered=, :registered?, :signature, :signature=,
|
|
41
|
+
:signature?, :provisional, :provisional=, :provisional?, file: "flags"
|
|
40
42
|
column :xrefs, :xrefs=, :xref_urls
|
|
41
43
|
column :use_instead, :use_instead=
|
|
42
44
|
|
|
@@ -51,6 +53,17 @@ class MIME::Type::Columnar < MIME::Type
|
|
|
51
53
|
super
|
|
52
54
|
end
|
|
53
55
|
|
|
56
|
+
def update_sort_priority
|
|
57
|
+
if @container.__fully_loaded?
|
|
58
|
+
super
|
|
59
|
+
else
|
|
60
|
+
obsolete = (@__sort_priority & (1 << 7)) != 0
|
|
61
|
+
registered = (@__sort_priority & (1 << 5)) == 0
|
|
62
|
+
|
|
63
|
+
@__priority_penalty = (obsolete ? 3 : 0) + (registered ? 0 : 2)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
54
67
|
class << self
|
|
55
68
|
undef column
|
|
56
69
|
end
|