mime-types 3.4.1 → 3.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.standard.yml +4 -0
- data/Contributing.md +11 -11
- data/History.md +73 -23
- data/Manifest.txt +1 -0
- data/README.rdoc +1 -1
- data/Rakefile +13 -53
- data/lib/mime/type.rb +28 -2
- data/lib/mime/types/cache.rb +3 -7
- data/lib/mime/types/deprecations.rb +12 -12
- data/lib/mime/types/registry.rb +1 -1
- data/lib/mime/types.rb +8 -8
- data/test/test_mime_type.rb +21 -1
- data/test/test_mime_types.rb +4 -0
- data/test/test_mime_types_cache.rb +1 -1
- data/test/test_mime_types_class.rb +5 -0
- metadata +40 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2577d95fe119a69a6462f904e9395bd3e2afe41a92e31bb278efd5978edfe450
|
4
|
+
data.tar.gz: d014796e5c1647f5a19b45b7993b390540b671fca83471e3d004712b277f3283
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 152b2f7e76b5b54c5dce0f0f97d5b0c301e4df2d71df0ba7643027d3e1015e3a3be838ceff2e49a851a3c62cd802ff2ab1473a1a62f6e359e66252204ce4bc7e
|
7
|
+
data.tar.gz: 63b40def9bdb08b5d4acc7af524746e900c6e07fb4b267e6bc816e083b59b1d7b779b3d7884494e1a8e5eea88240aa1a2c4e95e71e1be79f4fdf31dbdb251903
|
data/.standard.yml
ADDED
data/Contributing.md
CHANGED
@@ -6,11 +6,11 @@ request, or code contributions.
|
|
6
6
|
There are a few guidelines for contributing to mime-types:
|
7
7
|
|
8
8
|
- Code changes _will_ _not_ be accepted without tests. The test suite is
|
9
|
-
written with [minitest].
|
9
|
+
written with [minitest][].
|
10
10
|
- Match my coding style.
|
11
11
|
- Use a thoughtfully-named topic branch that contains your change. Rebase your
|
12
12
|
commits into logical chunks as necessary.
|
13
|
-
- Use [quality commit messages].
|
13
|
+
- Use [quality commit messages][].
|
14
14
|
- Do not change the version number; when your patch is accepted and a release
|
15
15
|
is made, the version will be updated at that point.
|
16
16
|
- Submit a GitHub pull request with your changes.
|
@@ -19,25 +19,23 @@ There are a few guidelines for contributing to mime-types:
|
|
19
19
|
## Adding or Modifying MIME Types
|
20
20
|
|
21
21
|
The mime-types registry is no longer contained in mime-types, but in
|
22
|
-
[mime-types-data]. Please see that project for contributions there.
|
22
|
+
[mime-types-data][]. Please see that project for contributions there.
|
23
23
|
|
24
24
|
### Test Dependencies
|
25
25
|
|
26
|
-
mime-types uses Ryan Davis’s [Hoe] to manage the release process, and it adds
|
27
|
-
a number of rake tasks. You will mostly be interested in `rake`, which runs
|
28
|
-
|
26
|
+
mime-types uses Ryan Davis’s [Hoe][] to manage the release process, and it adds
|
27
|
+
a number of rake tasks. You will mostly be interested in `rake`, which runs the
|
28
|
+
tests the same way that `rake test` will do.
|
29
29
|
|
30
30
|
To assist with the installation of the development dependencies for
|
31
31
|
mime-types, I have provided the simplest possible Gemfile pointing to the
|
32
|
-
(generated) `mime-types.gemspec` file. This will permit you to do `bundle
|
33
|
-
install` to get the development dependencies. If you aleady have `hoe`
|
32
|
+
(generated) `mime-types.gemspec` file. This will permit you to do `bundle install` to get the development dependencies. If you already have `hoe`
|
34
33
|
installed, you can accomplish the same thing with `rake newb`.
|
35
34
|
|
36
35
|
This task will install any missing dependencies, run the tests/specs, and
|
37
36
|
generate the RDoc.
|
38
37
|
|
39
|
-
You can run tests with code coverage analysis by running `rake
|
40
|
-
test:coverage`.
|
38
|
+
You can run tests with code coverage analysis by running `rake test:coverage`.
|
41
39
|
|
42
40
|
## Benchmarks
|
43
41
|
|
@@ -52,7 +50,7 @@ built-in benchmark library:
|
|
52
50
|
|
53
51
|
There are two allocation tracing benchmarks (for normal and columnar loads).
|
54
52
|
These can only be run on Ruby 2.1 or better and requires the
|
55
|
-
[allocation\_tracer] gem (not installed by default).
|
53
|
+
[allocation\_tracer][] gem (not installed by default).
|
56
54
|
|
57
55
|
- `rake benchmark:allocations`
|
58
56
|
- `rake benchmark:allocations:columnar`
|
@@ -84,6 +82,7 @@ Here's the most direct way to get your work merged into the project:
|
|
84
82
|
Thanks to everyone else who has contributed to mime-types over the years:
|
85
83
|
|
86
84
|
- Aaron Patterson
|
85
|
+
- Alex Vondrak
|
87
86
|
- Aggelos Avgerinos
|
88
87
|
- Al Snow
|
89
88
|
- Andre Pankratz
|
@@ -122,6 +121,7 @@ Thanks to everyone else who has contributed to mime-types over the years:
|
|
122
121
|
- Richard Hirner
|
123
122
|
- Richard Hurt
|
124
123
|
- Richard Schneeman
|
124
|
+
- Robb Shecter
|
125
125
|
- Tibor Szolár
|
126
126
|
- Todd Carrico
|
127
127
|
|
data/History.md
CHANGED
@@ -1,8 +1,51 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 3.5.1 / 2023-08-21
|
4
|
+
|
5
|
+
- 1 bug fix:
|
6
|
+
|
7
|
+
- Better handle possible line-termination strings (legal in Unix filenames)
|
8
|
+
such as `\n` in `MIME::Types.type_for`. Reported by ooooooo-q in [#177][],
|
9
|
+
resolved in [#178][].
|
10
|
+
|
11
|
+
## 3.5.0 / 2023-08-07
|
12
|
+
|
13
|
+
- 1 minor enhancement:
|
14
|
+
|
15
|
+
- Robb Shecter changed the default log level for duplicate type variant from
|
16
|
+
`warn` to `debug` in [#170][]. This works because `MIME::Types.logger` is
|
17
|
+
intended to fit the `::Logger` interface, and the default logger
|
18
|
+
(`WarnLogger`) is a subclass of `::Logger` that passes through to
|
19
|
+
`Kernel.warn`.
|
20
|
+
|
21
|
+
- Further consideration has changed cache load messages from `warn` to
|
22
|
+
`error` and deprecation messages from `warn` to `debug`.
|
23
|
+
|
24
|
+
- 1 bug fix:
|
25
|
+
|
26
|
+
- Added a definition of `MIME::Type#hash`. Contributed by Alex Vondrak in
|
27
|
+
[#167][], fixing [#166][].
|
28
|
+
|
29
|
+
- Dependency and CI updates:
|
30
|
+
|
31
|
+
- Update the .github/workflows/ci.yml workflow to test Ruby 3.2 and more
|
32
|
+
reliably test certain combinations rather than depending on exclusions.
|
33
|
+
|
34
|
+
- Change `.standard.yml` configuration to format for Ruby 2.3 as certain files
|
35
|
+
are not properly detected with Ruby 2.0.
|
36
|
+
|
37
|
+
- Change from `hoe-git` to `hoe-git2` to support Hoe version 4.
|
38
|
+
|
39
|
+
- Apply `standardrb --fix`.
|
40
|
+
|
41
|
+
- The above changes have resulted in the Soft deprecation of Ruby versions
|
42
|
+
below 2.6. Any errors reported for Ruby versions 2.0, 2.1, 2.2, 2.3, 2.4,
|
43
|
+
and 2.5 will be resolved, but maintaining CI for these versions is
|
44
|
+
unsustainable.
|
45
|
+
|
3
46
|
## 3.4.1 / 2021-11-16
|
4
47
|
|
5
|
-
- 1
|
48
|
+
- 1 bug fix:
|
6
49
|
|
7
50
|
- Fixed a Ruby < 2.3 incompatibility introduced by the use of standardrb,
|
8
51
|
where `<<-` heredocs were converted to `<<~` heredocs. These have been
|
@@ -26,7 +69,7 @@
|
|
26
69
|
- Added Ruby 3.0 to the CI test matrix. Added `windows/jruby` to the
|
27
70
|
CI exclusion list; it refuses to run successfully.
|
28
71
|
- Removed the Travis CI configuration and changed it to Github Workflows
|
29
|
-
[#150]. Removed Coveralls configuration.
|
72
|
+
[#150][]. Removed Coveralls configuration.
|
30
73
|
- Igor Victor added TruffleRuby to the Travis CI configuration. [#149]
|
31
74
|
- Koichi ITO loosened an excessively tight dependency. [#147]
|
32
75
|
- Started using `standardrb` for Ruby formatting and validation.
|
@@ -34,7 +77,7 @@
|
|
34
77
|
|
35
78
|
## 3.3.1 / 2019-12-26
|
36
79
|
|
37
|
-
- 1 minor
|
80
|
+
- 1 minor bug fix:
|
38
81
|
|
39
82
|
- Al Snow fixed a warning with MIME::Types::Logger producing a warning
|
40
83
|
because Ruby 2.7 introduces numbered block parameters. Because of the way
|
@@ -44,7 +87,7 @@
|
|
44
87
|
|
45
88
|
- Administrivia:
|
46
89
|
|
47
|
-
- Olle Jonsson removed an outdated Travis configuration option
|
90
|
+
- Olle Jonsson removed an outdated Travis configuration option. [#142][]
|
48
91
|
|
49
92
|
## 3.3 / 2019-09-04
|
50
93
|
|
@@ -79,8 +122,9 @@
|
|
79
122
|
to be in the same family even if strict sorting would cause an
|
80
123
|
unregistered type to be sorted first. [#132]
|
81
124
|
|
82
|
-
- Dillon Welch contributed a change that added `frozen_string_literal: true`
|
83
|
-
|
125
|
+
- Dillon Welch contributed a change that added `frozen_string_literal: true`
|
126
|
+
to files so that modern Rubies can automatically reduce duplicate string
|
127
|
+
allocations. [#135]
|
84
128
|
|
85
129
|
- 2 bug fixes
|
86
130
|
|
@@ -91,7 +135,7 @@
|
|
91
135
|
because when Enumerable#inject isn't provided a starting value, the first
|
92
136
|
value is used as the default value. In every case where this error was
|
93
137
|
happening, the result was supposed to be an array containing Set objects
|
94
|
-
so they can be reduced to a single Set. [#117], [#127], [#134]
|
138
|
+
so they can be reduced to a single Set. [#117][], [#127][], [#134][]
|
95
139
|
|
96
140
|
- Fixed an uncontrolled growth bug in MIME::Types::Container where a key
|
97
141
|
miss would create a new entry with an empty Set in the container. This
|
@@ -113,12 +157,12 @@
|
|
113
157
|
- The history file has been modified to remove all history prior to 3.0.
|
114
158
|
This history can be found in previous commits.
|
115
159
|
|
116
|
-
- A spelling error was corrected by Edward Betts ([#129]).
|
160
|
+
- A spelling error was corrected by Edward Betts ([#129][]).
|
117
161
|
|
118
162
|
- Administrivia:
|
119
163
|
|
120
164
|
- CI configuration for more modern versions of Ruby were added by Nicolas
|
121
|
-
Leger ([#130]), Jun Aruga ([#125]), and Austin Ziegler. Removed
|
165
|
+
Leger ([#130][]), Jun Aruga ([#125][]), and Austin Ziegler. Removed
|
122
166
|
ruby-head-clang and rbx (Rubinius) from CI.
|
123
167
|
|
124
168
|
- Fixed tests which were asserting equality against nil, which will become
|
@@ -129,18 +173,18 @@
|
|
129
173
|
- 1 documentation change:
|
130
174
|
|
131
175
|
- Tim Smith (@tas50) updated the build badges to be SVGs to improve
|
132
|
-
readability on high-density (retina) screens with pull request [#112].
|
176
|
+
readability on high-density (retina) screens with pull request [#112][].
|
133
177
|
|
134
178
|
- 3 bug fixes
|
135
179
|
|
136
180
|
- A test for `MIME::Types::Cache` fails under Ruby 2.3 because of frozen
|
137
|
-
strings, [#118]. This has been fixed.
|
181
|
+
strings, [#118][]. This has been fixed.
|
138
182
|
|
139
183
|
- The JSON data has been incorrectly encoded since the release of
|
140
184
|
mime-types 3 on the `xrefs` field, because of the switch to using a Set
|
141
185
|
to store cross-reference information. This has been fixed.
|
142
186
|
|
143
|
-
- A tentative fix for [#117] has been applied, removing the only circular
|
187
|
+
- A tentative fix for [#117][] has been applied, removing the only circular
|
144
188
|
require dependencies that exist (and for which there was code to prevent,
|
145
189
|
but the current fix is simpler). I have no way to verify this fix and
|
146
190
|
depending on how things are loaded by `delayed_job`, this fix may not be
|
@@ -155,22 +199,22 @@
|
|
155
199
|
- 2 governance changes
|
156
200
|
|
157
201
|
- This project and the related mime-types-data project are now exclusively
|
158
|
-
MIT licensed. Resolves [#95].
|
202
|
+
MIT licensed. Resolves [#95][].
|
159
203
|
|
160
204
|
- All projects under the mime-types organization now have a standard code
|
161
|
-
of conduct adapted from the [Contributor Covenant]. This text can be
|
162
|
-
found in the [Code-of-Conduct.md] file.
|
205
|
+
of conduct adapted from the [Contributor Covenant][]. This text can be
|
206
|
+
found in the [Code-of-Conduct.md][] file.
|
163
207
|
|
164
208
|
- 3 major changes
|
165
209
|
|
166
210
|
- All methods deprecated in mime-types 2.x have been removed.
|
167
211
|
|
168
212
|
- mime-types now requires Ruby 2.0 compatibility or later. Resolves
|
169
|
-
[#97].
|
213
|
+
[#97][].
|
170
214
|
|
171
215
|
- The registry data has been removed from mime-types and put into
|
172
216
|
mime-types-data, maintained and released separately. It can be found at
|
173
|
-
[mime-types-data].
|
217
|
+
[mime-types-data][].
|
174
218
|
|
175
219
|
- 17 minor changes:
|
176
220
|
|
@@ -183,8 +227,9 @@
|
|
183
227
|
`x-` prefixes.
|
184
228
|
|
185
229
|
- Improved initialization with an Array works so that extensions do not
|
186
|
-
need to be wrapped in another array. This means that
|
187
|
-
|
230
|
+
need to be wrapped in another array. This means that
|
231
|
+
`%w(text/yaml yaml yml)` works in the same way that
|
232
|
+
`['text/yaml', %w(yaml yml)]` did (and still does).
|
188
233
|
|
189
234
|
- Changed `priority_compare` to conform with attributes that no longer
|
190
235
|
exist.
|
@@ -192,8 +237,8 @@
|
|
192
237
|
- Changed the internal implementation of extensions to use a frozen Set.
|
193
238
|
|
194
239
|
- When extensions are set or modified with `add_extensions`, the primary
|
195
|
-
registry will be informed of a need to
|
196
|
-
[#84].
|
240
|
+
registry will be informed of a need to re-index extensions. Resolves
|
241
|
+
[#84][].
|
197
242
|
|
198
243
|
- The preferred extension can be set explicitly. If not set, it will be
|
199
244
|
the first extension. If the preferred extension is not in the extension
|
@@ -216,7 +261,7 @@
|
|
216
261
|
- Extracted the class methods to a separate file.
|
217
262
|
|
218
263
|
- Changed the container implementation to use a Set instead of an Array
|
219
|
-
to prevent data duplication. Resolves [#79].
|
264
|
+
to prevent data duplication. Resolves [#79][].
|
220
265
|
|
221
266
|
- `MIME::Types::Cache` changes:
|
222
267
|
|
@@ -235,7 +280,7 @@
|
|
235
280
|
|
236
281
|
- The registry is default loaded from the columnar store by default. The
|
237
282
|
internal format of the columnar store has changed; many of the boolean
|
238
|
-
flags are now loaded from a single file. Resolves [#85].
|
283
|
+
flags are now loaded from a single file. Resolves [#85][].
|
239
284
|
|
240
285
|
[#79]: https://github.com/mime-types/ruby-mime-types/pull/79
|
241
286
|
[#84]: https://github.com/mime-types/ruby-mime-types/pull/84
|
@@ -264,6 +309,11 @@
|
|
264
309
|
[#149]: https://github.com/mime-types/ruby-mime-types/pull/149
|
265
310
|
[#150]: https://github.com/mime-types/ruby-mime-types/pull/150
|
266
311
|
[#153]: https://github.com/mime-types/ruby-mime-types/pull/153
|
312
|
+
[#166]: https://github.com/mime-types/ruby-mime-types/issues/166
|
313
|
+
[#167]: https://github.com/mime-types/ruby-mime-types/pull/167
|
314
|
+
[#170]: https://github.com/mime-types/ruby-mime-types/pull/170
|
315
|
+
[#177]: https://github.com/mime-types/ruby-mime-types/issues/177
|
316
|
+
[#178]: https://github.com/mime-types/ruby-mime-types/pull/178
|
267
317
|
[code-of-conduct.md]: Code-of-Conduct_md.html
|
268
318
|
[contributor covenant]: http://contributor-covenant.org
|
269
319
|
[mime-types-data]: https://github.com/mime-types/mime-types-data
|
data/Manifest.txt
CHANGED
data/README.rdoc
CHANGED
@@ -5,7 +5,7 @@ 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
7
|
clog :: https://github.com/mime-types/ruby-mime-types/blob/master/History.md
|
8
|
-
continuous integration :: {<img src="https://
|
8
|
+
continuous integration :: {<img src="https://github.com/mime-types/ruby-mime-types/actions/workflows/ci.yml/badge.svg" alt="Build Status" />}[https://github.com/mime-types/ruby-mime-types/actions/workflows/ci.yml]
|
9
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]
|
10
10
|
|
11
11
|
== Description
|
data/Rakefile
CHANGED
@@ -1,78 +1,40 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
1
|
require "rubygems"
|
4
2
|
require "hoe"
|
5
3
|
require "rake/clean"
|
6
4
|
|
7
|
-
|
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
|
41
|
-
|
5
|
+
Hoe.plugin :cov
|
42
6
|
Hoe.plugin :doofus
|
43
7
|
Hoe.plugin :gemspec2
|
44
|
-
Hoe.plugin :
|
8
|
+
Hoe.plugin :git2
|
45
9
|
Hoe.plugin :minitest
|
46
|
-
Hoe.plugin :
|
10
|
+
Hoe.plugin :rubygems
|
47
11
|
|
48
12
|
spec = Hoe.spec "mime-types" do
|
49
13
|
developer("Austin Ziegler", "halostatue@gmail.com")
|
50
|
-
self.need_tar = true
|
51
|
-
|
52
|
-
require_ruby_version ">= 2.0"
|
53
14
|
|
54
15
|
self.history_file = "History.md"
|
55
16
|
self.readme_file = "README.rdoc"
|
56
17
|
|
57
18
|
license "MIT"
|
58
19
|
|
20
|
+
require_ruby_version ">= 2.0"
|
21
|
+
|
22
|
+
spec_extras[:metadata] = ->(val) { val["rubygems_mfa_required"] = "true" }
|
23
|
+
|
59
24
|
extra_deps << ["mime-types-data", "~> 3.2015"]
|
60
25
|
|
26
|
+
extra_dev_deps << ["hoe", ">= 3.0", "< 5"]
|
61
27
|
extra_dev_deps << ["hoe-doofus", "~> 1.0"]
|
62
28
|
extra_dev_deps << ["hoe-gemspec2", "~> 1.1"]
|
63
|
-
extra_dev_deps << ["hoe-
|
29
|
+
extra_dev_deps << ["hoe-git2", "~> 1.7"]
|
64
30
|
extra_dev_deps << ["hoe-rubygems", "~> 1.0"]
|
65
|
-
extra_dev_deps << ["
|
66
|
-
extra_dev_deps << ["minitest", "~> 5.4"]
|
31
|
+
extra_dev_deps << ["minitest", "~> 5.0"]
|
67
32
|
extra_dev_deps << ["minitest-autotest", "~> 1.0"]
|
68
|
-
extra_dev_deps << ["minitest-focus", "~> 1.0"]
|
69
33
|
extra_dev_deps << ["minitest-bonus-assertions", "~> 3.0"]
|
34
|
+
extra_dev_deps << ["minitest-focus", "~> 1.0"]
|
70
35
|
extra_dev_deps << ["minitest-hooks", "~> 1.4"]
|
71
36
|
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"]
|
75
|
-
end
|
37
|
+
extra_dev_deps << ["standard", "~> 1.0"]
|
76
38
|
end
|
77
39
|
|
78
40
|
namespace :benchmark do
|
@@ -235,9 +197,7 @@ namespace :convert do
|
|
235
197
|
|
236
198
|
file mark => [rdoc, :setup] do |t|
|
237
199
|
puts "#{rdoc} => #{mark}"
|
238
|
-
File.
|
239
|
-
target.write @doc_converter.convert(IO.read(t.prerequisites.first))
|
240
|
-
}
|
200
|
+
File.binwrite(t.name, @doc_converter.convert(IO.read(t.prerequisites.first)))
|
241
201
|
end
|
242
202
|
|
243
203
|
CLEAN.add mark
|
data/lib/mime/type.rb
CHANGED
@@ -93,7 +93,7 @@ class MIME::Type
|
|
93
93
|
end
|
94
94
|
|
95
95
|
# The released version of the mime-types library.
|
96
|
-
VERSION = "3.
|
96
|
+
VERSION = "3.5.1"
|
97
97
|
|
98
98
|
include Comparable
|
99
99
|
|
@@ -224,6 +224,32 @@ class MIME::Type
|
|
224
224
|
other.is_a?(MIME::Type) && (self == other)
|
225
225
|
end
|
226
226
|
|
227
|
+
# Returns a hash based on the #simplified value.
|
228
|
+
#
|
229
|
+
# This maintains the invariant that two #eql? instances must have the same
|
230
|
+
# #hash (although having the same #hash does *not* imply that the objects are
|
231
|
+
# #eql?).
|
232
|
+
#
|
233
|
+
# To see why, suppose a MIME::Type instance +a+ is compared to another object
|
234
|
+
# +b+, and that <code>a.eql?(b)</code> is true. By the definition of #eql?,
|
235
|
+
# we know the following:
|
236
|
+
#
|
237
|
+
# 1. +b+ is a MIME::Type instance itself.
|
238
|
+
# 2. <code>a == b</code> is true.
|
239
|
+
#
|
240
|
+
# Due to the first point, we know that +b+ should respond to the #simplified
|
241
|
+
# method. Thus, per the definition of #<=>, we know that +a.simplified+ must
|
242
|
+
# be equal to +b.simplified+, as compared by the <=> method corresponding to
|
243
|
+
# +a.simplified+.
|
244
|
+
#
|
245
|
+
# Presumably, if <code>a.simplified <=> b.simplified</code> is +0+, then
|
246
|
+
# +a.simplified+ has the same hash as +b.simplified+. So we assume it's
|
247
|
+
# suitable for #hash to delegate to #simplified in service of the #eql?
|
248
|
+
# invariant.
|
249
|
+
def hash
|
250
|
+
simplified.hash
|
251
|
+
end
|
252
|
+
|
227
253
|
# Returns the whole MIME content-type string.
|
228
254
|
#
|
229
255
|
# The content type is a presentation value from the MIME type registry and
|
@@ -338,7 +364,7 @@ class MIME::Type
|
|
338
364
|
|
339
365
|
# Returns the default encoding for the MIME::Type based on the media type.
|
340
366
|
def default_encoding
|
341
|
-
@media_type == "text" ? "quoted-printable" : "base64"
|
367
|
+
(@media_type == "text") ? "quoted-printable" : "base64"
|
342
368
|
end
|
343
369
|
|
344
370
|
##
|
data/lib/mime/types/cache.rb
CHANGED
@@ -22,13 +22,13 @@ class << MIME::Types::Cache
|
|
22
22
|
if cache.version == MIME::Types::Data::VERSION
|
23
23
|
Marshal.load(cache.data)
|
24
24
|
else
|
25
|
-
MIME::Types.logger.
|
25
|
+
MIME::Types.logger.error <<-WARNING.chomp.strip
|
26
26
|
Could not load MIME::Types cache: invalid version
|
27
27
|
WARNING
|
28
28
|
nil
|
29
29
|
end
|
30
30
|
rescue => e
|
31
|
-
MIME::Types.logger.
|
31
|
+
MIME::Types.logger.error <<-WARNING.chomp.strip
|
32
32
|
Could not load MIME::Types cache: #{e}
|
33
33
|
WARNING
|
34
34
|
nil
|
@@ -49,10 +49,6 @@ class << MIME::Types::Cache
|
|
49
49
|
|
50
50
|
types ||= MIME::Types.send(:__types__)
|
51
51
|
|
52
|
-
File.
|
53
|
-
f.write(
|
54
|
-
Marshal.dump(new(MIME::Types::Data::VERSION, Marshal.dump(types)))
|
55
|
-
)
|
56
|
-
end
|
52
|
+
File.binwrite(cache_file, Marshal.dump(new(MIME::Types::Data::VERSION, Marshal.dump(types))))
|
57
53
|
end
|
58
54
|
end
|
@@ -10,22 +10,22 @@ module MIME
|
|
10
10
|
def self.deprecated(klass, sym, message = nil, &block) # :nodoc:
|
11
11
|
level =
|
12
12
|
case klass
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
when Class, Module
|
14
|
+
"."
|
15
|
+
else
|
16
|
+
klass = klass.class
|
17
|
+
"#"
|
18
18
|
end
|
19
19
|
message =
|
20
20
|
case message
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
when :private, :protected
|
22
|
+
"and will be #{message}"
|
23
|
+
when nil
|
24
|
+
"and will be removed"
|
25
|
+
else
|
26
|
+
message
|
27
27
|
end
|
28
|
-
MIME::Types.logger.
|
28
|
+
MIME::Types.logger.debug <<-WARNING.chomp.strip
|
29
29
|
#{caller(2..2).first}: #{klass}#{level}#{sym} is deprecated #{message}.
|
30
30
|
WARNING
|
31
31
|
|
data/lib/mime/types/registry.rb
CHANGED
@@ -45,7 +45,7 @@ class << MIME::Types
|
|
45
45
|
def lazy_load?
|
46
46
|
return unless ENV.key?("RUBY_MIME_TYPES_LAZY_LOAD")
|
47
47
|
|
48
|
-
MIME::Types.logger.
|
48
|
+
MIME::Types.logger.debug <<-WARNING.chomp.strip
|
49
49
|
Lazy loading ($RUBY_MIME_TYPES_LAZY_LOAD) is deprecated and will be removed.
|
50
50
|
WARNING
|
51
51
|
|
data/lib/mime/types.rb
CHANGED
@@ -125,12 +125,12 @@ class MIME::Types
|
|
125
125
|
def [](type_id, complete: false, registered: false)
|
126
126
|
matches =
|
127
127
|
case type_id
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
128
|
+
when MIME::Type
|
129
|
+
@type_variants[type_id.simplified]
|
130
|
+
when Regexp
|
131
|
+
match(type_id)
|
132
|
+
else
|
133
|
+
@type_variants[MIME::Type.simplified(type_id)]
|
134
134
|
end
|
135
135
|
|
136
136
|
prune_matches(matches, complete, registered).sort { |a, b|
|
@@ -152,7 +152,7 @@ class MIME::Types
|
|
152
152
|
# => [application/xml, image/gif, text/xml]
|
153
153
|
def type_for(filename)
|
154
154
|
Array(filename).flat_map { |fn|
|
155
|
-
@extension_index[fn.chomp.downcase[/\.?([^.]*?)
|
155
|
+
@extension_index[fn.chomp.downcase[/\.?([^.]*?)\z/m, 1]]
|
156
156
|
}.compact.inject(Set.new, :+).sort { |a, b|
|
157
157
|
a.priority_compare(b)
|
158
158
|
}
|
@@ -187,7 +187,7 @@ class MIME::Types
|
|
187
187
|
# truthy value to suppress that warning.
|
188
188
|
def add_type(type, quiet = false)
|
189
189
|
if !quiet && @type_variants[type.simplified].include?(type)
|
190
|
-
MIME::Types.logger.
|
190
|
+
MIME::Types.logger.debug <<-WARNING.chomp.strip
|
191
191
|
Type #{type} is already registered as a variant of #{type.simplified}.
|
192
192
|
WARNING
|
193
193
|
end
|
data/test/test_mime_type.rb
CHANGED
@@ -266,7 +266,27 @@ describe MIME::Type do
|
|
266
266
|
end
|
267
267
|
|
268
268
|
it "is true for an equivalent MIME::Type" do
|
269
|
-
assert text_plain
|
269
|
+
assert text_plain.eql?(mime_type("text/Plain"))
|
270
|
+
end
|
271
|
+
|
272
|
+
it "is true for an equivalent subclass of MIME::Type" do
|
273
|
+
subclass = Class.new(MIME::Type)
|
274
|
+
assert text_plain.eql?(subclass.new("text/plain"))
|
275
|
+
end
|
276
|
+
end
|
277
|
+
|
278
|
+
describe "#hash" do
|
279
|
+
it "is the same between #eql? MIME::Type instances" do
|
280
|
+
assert_equal text_plain.hash, mime_type("text/plain").hash
|
281
|
+
end
|
282
|
+
|
283
|
+
it "is the same between #eql? MIME::Type instances of different classes" do
|
284
|
+
subclass = Class.new(MIME::Type)
|
285
|
+
assert_equal text_plain.hash, subclass.new("text/plain").hash
|
286
|
+
end
|
287
|
+
|
288
|
+
it "uses the #simplified value" do
|
289
|
+
assert_equal text_plain.hash, mime_type("text/Plain").hash
|
270
290
|
end
|
271
291
|
end
|
272
292
|
|
data/test/test_mime_types.rb
CHANGED
@@ -159,6 +159,10 @@ describe MIME::Types do
|
|
159
159
|
plain_text.add_extensions("xtxt")
|
160
160
|
assert_includes mime_types.type_for("xtxt"), "text/plain"
|
161
161
|
end
|
162
|
+
|
163
|
+
it "handles newline characters correctly" do
|
164
|
+
assert_includes mime_types.type_for("test.pdf\n.txt"), "text/plain"
|
165
|
+
end
|
162
166
|
end
|
163
167
|
|
164
168
|
describe "#count" do
|
@@ -67,7 +67,7 @@ describe MIME::Types::Cache do
|
|
67
67
|
it "outputs an error when there is a marshal file incompatibility" do
|
68
68
|
MIME::Types::Cache.save
|
69
69
|
data = File.binread(@cache_file).reverse
|
70
|
-
File.
|
70
|
+
File.binwrite(@cache_file, data)
|
71
71
|
MIME::Types.instance_variable_set(:@__types__, nil)
|
72
72
|
assert_output "", /incompatible marshal file format/ do
|
73
73
|
MIME::Types["text/html"]
|
@@ -100,6 +100,11 @@ describe MIME::Types, "registry" do
|
|
100
100
|
plain_text.add_extensions("xtxt")
|
101
101
|
assert_includes MIME::Types.type_for("xtxt"), "text/plain"
|
102
102
|
end
|
103
|
+
|
104
|
+
it "handles newline characters correctly" do
|
105
|
+
assert_includes MIME::Types.type_for("test.pdf\n.txt"), "text/plain"
|
106
|
+
assert_includes MIME::Types.type_for("test.txt\n.pdf"), "application/pdf"
|
107
|
+
end
|
103
108
|
end
|
104
109
|
|
105
110
|
describe ".count" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mime-types
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Austin Ziegler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-08-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mime-types-data
|
@@ -30,72 +30,78 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '5.
|
33
|
+
version: '5.19'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '5.
|
40
|
+
version: '5.19'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: hoe
|
42
|
+
name: hoe
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '3.0'
|
48
|
+
- - "<"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '5'
|
48
51
|
type: :development
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
|
-
- - "
|
55
|
+
- - ">="
|
53
56
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
57
|
+
version: '3.0'
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '5'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
|
-
name: hoe-
|
62
|
+
name: hoe-doofus
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
65
|
- - "~>"
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '1.
|
67
|
+
version: '1.0'
|
62
68
|
type: :development
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
72
|
- - "~>"
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: '1.
|
74
|
+
version: '1.0'
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
|
-
name: hoe-
|
76
|
+
name: hoe-gemspec2
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
79
|
- - "~>"
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: '1.
|
81
|
+
version: '1.1'
|
76
82
|
type: :development
|
77
83
|
prerelease: false
|
78
84
|
version_requirements: !ruby/object:Gem::Requirement
|
79
85
|
requirements:
|
80
86
|
- - "~>"
|
81
87
|
- !ruby/object:Gem::Version
|
82
|
-
version: '1.
|
88
|
+
version: '1.1'
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
|
-
name: hoe-
|
90
|
+
name: hoe-git2
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
86
92
|
requirements:
|
87
93
|
- - "~>"
|
88
94
|
- !ruby/object:Gem::Version
|
89
|
-
version: '1.
|
95
|
+
version: '1.7'
|
90
96
|
type: :development
|
91
97
|
prerelease: false
|
92
98
|
version_requirements: !ruby/object:Gem::Requirement
|
93
99
|
requirements:
|
94
100
|
- - "~>"
|
95
101
|
- !ruby/object:Gem::Version
|
96
|
-
version: '1.
|
102
|
+
version: '1.7'
|
97
103
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
104
|
+
name: hoe-rubygems
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
100
106
|
requirements:
|
101
107
|
- - "~>"
|
@@ -123,33 +129,33 @@ dependencies:
|
|
123
129
|
- !ruby/object:Gem::Version
|
124
130
|
version: '1.0'
|
125
131
|
- !ruby/object:Gem::Dependency
|
126
|
-
name: minitest-
|
132
|
+
name: minitest-bonus-assertions
|
127
133
|
requirement: !ruby/object:Gem::Requirement
|
128
134
|
requirements:
|
129
135
|
- - "~>"
|
130
136
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
137
|
+
version: '3.0'
|
132
138
|
type: :development
|
133
139
|
prerelease: false
|
134
140
|
version_requirements: !ruby/object:Gem::Requirement
|
135
141
|
requirements:
|
136
142
|
- - "~>"
|
137
143
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
144
|
+
version: '3.0'
|
139
145
|
- !ruby/object:Gem::Dependency
|
140
|
-
name: minitest-
|
146
|
+
name: minitest-focus
|
141
147
|
requirement: !ruby/object:Gem::Requirement
|
142
148
|
requirements:
|
143
149
|
- - "~>"
|
144
150
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
151
|
+
version: '1.0'
|
146
152
|
type: :development
|
147
153
|
prerelease: false
|
148
154
|
version_requirements: !ruby/object:Gem::Requirement
|
149
155
|
requirements:
|
150
156
|
- - "~>"
|
151
157
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
158
|
+
version: '1.0'
|
153
159
|
- !ruby/object:Gem::Dependency
|
154
160
|
name: minitest-hooks
|
155
161
|
requirement: !ruby/object:Gem::Requirement
|
@@ -185,19 +191,19 @@ dependencies:
|
|
185
191
|
- !ruby/object:Gem::Version
|
186
192
|
version: '14.0'
|
187
193
|
- !ruby/object:Gem::Dependency
|
188
|
-
name:
|
194
|
+
name: standard
|
189
195
|
requirement: !ruby/object:Gem::Requirement
|
190
196
|
requirements:
|
191
197
|
- - "~>"
|
192
198
|
- !ruby/object:Gem::Version
|
193
|
-
version: '0
|
199
|
+
version: '1.0'
|
194
200
|
type: :development
|
195
201
|
prerelease: false
|
196
202
|
version_requirements: !ruby/object:Gem::Requirement
|
197
203
|
requirements:
|
198
204
|
- - "~>"
|
199
205
|
- !ruby/object:Gem::Version
|
200
|
-
version: '0
|
206
|
+
version: '1.0'
|
201
207
|
- !ruby/object:Gem::Dependency
|
202
208
|
name: rdoc
|
203
209
|
requirement: !ruby/object:Gem::Requirement
|
@@ -219,19 +225,19 @@ dependencies:
|
|
219
225
|
- !ruby/object:Gem::Version
|
220
226
|
version: '7'
|
221
227
|
- !ruby/object:Gem::Dependency
|
222
|
-
name:
|
228
|
+
name: simplecov
|
223
229
|
requirement: !ruby/object:Gem::Requirement
|
224
230
|
requirements:
|
225
231
|
- - "~>"
|
226
232
|
- !ruby/object:Gem::Version
|
227
|
-
version: '
|
233
|
+
version: '0.21'
|
228
234
|
type: :development
|
229
235
|
prerelease: false
|
230
236
|
version_requirements: !ruby/object:Gem::Requirement
|
231
237
|
requirements:
|
232
238
|
- - "~>"
|
233
239
|
- !ruby/object:Gem::Version
|
234
|
-
version: '
|
240
|
+
version: '0.21'
|
235
241
|
description: |-
|
236
242
|
The mime-types library provides a library and registry for information about
|
237
243
|
MIME content type definitions. It can be used to determine defined filename
|
@@ -257,6 +263,7 @@ extra_rdoc_files:
|
|
257
263
|
- Manifest.txt
|
258
264
|
- README.rdoc
|
259
265
|
files:
|
266
|
+
- ".standard.yml"
|
260
267
|
- Code-of-Conduct.md
|
261
268
|
- Contributing.md
|
262
269
|
- History.md
|
@@ -296,6 +303,7 @@ metadata:
|
|
296
303
|
source_code_uri: https://github.com/mime-types/ruby-mime-types/
|
297
304
|
bug_tracker_uri: https://github.com/mime-types/ruby-mime-types/issues
|
298
305
|
changelog_uri: https://github.com/mime-types/ruby-mime-types/blob/master/History.md
|
306
|
+
rubygems_mfa_required: 'true'
|
299
307
|
post_install_message:
|
300
308
|
rdoc_options:
|
301
309
|
- "--main"
|
@@ -313,7 +321,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
313
321
|
- !ruby/object:Gem::Version
|
314
322
|
version: '0'
|
315
323
|
requirements: []
|
316
|
-
rubygems_version: 3.
|
324
|
+
rubygems_version: 3.4.18
|
317
325
|
signing_key:
|
318
326
|
specification_version: 4
|
319
327
|
summary: The mime-types library provides a library and registry for information about
|