mime-types 2.4.1 → 2.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MmFiNDllMzJlODVmMWE0YzI4NzM2YWZkNmU0NWE2YzZkODA0ZTI3NA==
4
+ MWViMWFhNWYxYmU3ZjM1NmE4ODUwNzM4ZjFlNDU1NjY0MTJhODBjMA==
5
5
  data.tar.gz: !binary |-
6
- NDY0NGU1OThlMmQwMjI2ODgzMTQzMTJiOTRmODgwYzcwMTE2NWY3Mg==
6
+ YmNmY2UyMDhkYjk0ZmE2NTE0MjI2ZWMxNjJmYzY4YjgwZTRkY2E5ZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MTEyNzQ2MDExMmUzZDk1YWMyZDMyMTUzMWIxYjYyZTRkZDM0M2U4NGM1NmFi
10
- M2EzNTlhNzY1MzY3NDVlYmI2YjY0YjhkYzU2N2I4YTU5NDBhZjlhMTY0YTkz
11
- YzIzNTYxMWYyMmZhYjk0Y2RkZjBkOTVhMGI5MzVlNjMxMjdiYjQ=
9
+ NTExNDY1MzFlNmFhMDU5NWQxMTEzZTY2YzE2ZWNlMjkzY2VmNzZmZjI3NGQ4
10
+ YmRmNjQ3NzY0YzA0ODhmNzEzZTc2N2E4NDg5NWI2NjczNjQ0Nzg3NDY4Njkz
11
+ OTlhNGVkNzBlYzcyZGU0MWVjNTk0NjMzNjhiOGRhZGI3YWZiY2I=
12
12
  data.tar.gz: !binary |-
13
- NGRjNGMwYmVjZDU2Zjg5ZjU5M2VjNGYxNTIyMDUzNWNjMWRjMGFlZmFkMjRl
14
- ODM1NGUwMmQ1MDliYmQ2MjYyMDdmZTVhY2RhMjQyY2RlYWNhNDE2MmZkMzRk
15
- NTZiYjM1NmVjZWQ5M2U5ZTk4ZjM0MjIyMWZkNjg5OWIxMDBiZjQ=
13
+ YTZiMDRlYzljMDk4MDRjZTA0MGJhMWFhMTU1YWIyNTQ1MDc4YTkzOTVkYjg4
14
+ MGVhYTZlODU2MDEzOTBiOTc0ZTIxYzhiMmQ1MDhjNGUwNWQ5ZTA0NDY1YThj
15
+ MWYzYTBiNTk4NDQzMzFjNjk3MzMwM2Q0MTUwNzVkM2YyNDY5Yjk=
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/Contributing.rdoc CHANGED
@@ -109,3 +109,5 @@ Thanks to everyone else who has contributed to mime-types:
109
109
  * Greg Brockman
110
110
  * Łukasz Śliwa (for the friendly names)
111
111
  * Keerthi Siva
112
+ * Aaron Patterson
113
+ * Godfrey Chan
data/History-Types.rdoc CHANGED
@@ -1,6 +1,11 @@
1
1
  = MIME Types Changes by Version
2
2
 
3
- == 2.4 / 2014-10-07
3
+ == 2.4.2 / 2014-10-15
4
+ * Added application/vnd.ms-outlook as an unregistered MIME type with the
5
+ extension +msg+. Provided by @keerthisiv in
6
+ {#72}[https://github.com/halostatue/mime-types/pull/72].
7
+
8
+ == 2.4.1 / 2014-10-07
4
9
 
5
10
  * Changed the sort order of many of the extensions to restore behaviour
6
11
  from mime-types 1.25.1.
data/History.rdoc CHANGED
@@ -1,4 +1,18 @@
1
- == 2.4 / 2014-10-07
1
+ == 2.4.2 / 2014-10-15
2
+
3
+ * Bugs:
4
+ * Aaron Patterson (@tenderlove) found a loading bug and provided a fix that
5
+ nearly doubled registry load performance
6
+ ({#74}[https://github.com/halostatue/mime-types/pull/74]).
7
+ * Godfrey Chan (@chancancode) provided a prophylactic security fix to use
8
+ <tt>JSON.parse</tt> instead of <tt>JSON.load</tt> in
9
+ {#75}[https://github.com/halostatue/mime-types/pull/75]. This provides a
10
+ 20% improvement over the already improved result, resulting in a total 55%
11
+ performance boost.
12
+
13
+ == 2.4.1 / 2014-10-07
14
+
15
+ mime-types 2.4 was pulled.
2
16
 
3
17
  * Bugs:
4
18
  * Restored the extension sort order from mime-types 1.25.1 and modified
data/README.rdoc CHANGED
@@ -24,8 +24,12 @@ add additional type definitions (see Contributing.rdoc). The primary sources
24
24
  for MIME type definitions found in mime-types is the IANA collection of
25
25
  registrations (see below for the link), RFCs, and W3C recommendations.
26
26
 
27
- This is release 2.4.1 (2.4 was pulled), fixing a bug in observed use of the
28
- mime-types library where extensions were not previously sorted, such that
27
+ This is release 2.4.2, fixing bugs with unnecessary object duplication and
28
+ using JSON.parse instead of JSON.load. These fixes improve the JSON registry
29
+ loading time by about 55% over previous 2.x releases. Cached registry load
30
+ times are not changed. This release builds on the 2.4.1 release, which fixed a
31
+ bug in observed use of the mime-types library where extensions were not
32
+ previously sorted, such that
29
33
 
30
34
  MIME::Types.of('image.jpg').first.extensions.first
31
35
 
data/Rakefile CHANGED
@@ -109,6 +109,24 @@ namespace :mime do
109
109
  end
110
110
 
111
111
  namespace :convert do
112
+ namespace :docs do
113
+ task :setup do
114
+ gem 'rdoc'
115
+ require 'rdoc/rdoc'
116
+ @doc_converter ||= RDoc::Markup::ToMarkdown.new
117
+ end
118
+
119
+ %w(README History History-Types).each do |name|
120
+ file "#{name}.md" => [ "#{name}.rdoc", :setup ] do |t|
121
+ File.open(t.name, 'wb') { |target|
122
+ target.write @doc_converter.convert(IO.read(t.prerequisites.first))
123
+ }
124
+ end
125
+
126
+ task docs: [ name ]
127
+ end
128
+ end
129
+
112
130
  namespace :yaml do
113
131
  desc "Convert from YAML to JSON"
114
132
  task :json, [ :source, :destination, :multiple_files ] => :support do |t, args|
data/lib/mime/type.rb CHANGED
@@ -50,18 +50,16 @@ class MIME::Type
50
50
  end
51
51
 
52
52
  def to_s
53
- "Invalid Encoding #{@encoding.inspect} (valid values are " +
54
- "#{MIME::Type::VALID_ENCODINGS.inspect})."
53
+ "Invalid Encoding #{@encoding.inspect} (valid values: #{VALID_ENCODINGS.inspect})."
55
54
  end
56
55
  # :startdoc:
57
56
  end
58
57
 
59
58
  # The released version of the mime-types library.
60
- VERSION = '2.4.1'
59
+ VERSION = '2.4.2'
61
60
 
62
61
  include Comparable
63
62
 
64
- # :stopdoc:
65
63
  MEDIA_TYPE_RE = %r{([-\w.+]+)/([-\w.+]*)}o
66
64
  UNREGISTERED_RE = %r{[Xx]-}o
67
65
  I18N_RE = %r{[^[:alnum:]]}o
@@ -76,7 +74,9 @@ class MIME::Type
76
74
  RFC_URL = "http://rfc-editor.org/rfc/rfc%s.txt"
77
75
  DRAFT_URL = "http://datatracker.ietf.org/public/idindex.cgi?command=id_details&filename=%s"
78
76
  CONTACT_URL = "http://www.iana.org/assignments/contact-people.htm#%s"
79
- # :startdoc:
77
+ private_constant :MEDIA_TYPE_RE, :UNREGISTERED_RE, :I18N_RE, :PLATFORM_RE,
78
+ :DEFAULT_ENCODINGS, :BINARY_ENCODINGS, :TEXT_ENCODINGS, :VALID_ENCODINGS,
79
+ :IANA_URL, :RFC_URL, :DRAFT_URL, :CONTACT_URL
80
80
 
81
81
  # Builds a MIME::Type object from the provided MIME Content Type value
82
82
  # (e.g., 'text/plain' or 'applicaton/x-eruby'). The constructed object is
@@ -157,13 +157,13 @@ class MIME::Type
157
157
  def priority_compare(other)
158
158
  pc = simplified <=> other.simplified
159
159
  if pc.zero?
160
- pc = if ((reg = registered?) != other.registered?)
160
+ pc = if (reg = registered?) != other.registered?
161
161
  reg ? -1 : 1 # registered < unregistered
162
- elsif ((plat = platform?(true)) != other.platform?(true))
162
+ elsif (plat = platform?(true)) != other.platform?(true)
163
163
  plat ? 1 : -1 # generic < platform
164
- elsif ((comp = complete?) != other.complete?)
164
+ elsif (comp = complete?) != other.complete?
165
165
  comp ? -1 : 1 # complete < incomplete
166
- elsif ((obs = obsolete?) != other.obsolete?)
166
+ elsif (obs = obsolete?) != other.obsolete?
167
167
  obs ? 1 : -1 # current < obsolete
168
168
  elsif obs and ((ui = use_instead) != (oui = other.use_instead))
169
169
  if ui.nil?
@@ -275,6 +275,7 @@ class MIME::Type
275
275
  MIME.deprecated(self, __method__)
276
276
  @system
277
277
  end
278
+
278
279
  def system=(os) # :nodoc:
279
280
  if os.nil? or os.kind_of?(Regexp)
280
281
  @system = os
@@ -302,6 +303,7 @@ class MIME::Type
302
303
  def obsolete?
303
304
  !!@obsolete
304
305
  end
306
+
305
307
  def obsolete=(v) # :nodoc:
306
308
  @obsolete = !!v
307
309
  end
@@ -324,6 +326,8 @@ class MIME::Type
324
326
  @friendly.merge!(Hash[*lang])
325
327
  when Hash
326
328
  @friendly.merge!(lang)
329
+ else
330
+ raise ArgumentError
327
331
  end
328
332
  end
329
333
 
@@ -352,6 +356,7 @@ class MIME::Type
352
356
  MIME.deprecated(self, __method__, "and has been renamed to #references")
353
357
  references
354
358
  end
359
+
355
360
  def url=(r) # :nodoc:
356
361
  MIME.deprecated(self, __method__)
357
362
  self.references = r
@@ -425,7 +430,7 @@ class MIME::Type
425
430
  values.map { |data|
426
431
  "http://www.iana.org/assignments/media-types/#{data}"
427
432
  }
428
- when 'uri', 'text'
433
+ else # 'uri', 'text', etc.
429
434
  values
430
435
  end
431
436
  }.flatten
@@ -449,6 +454,7 @@ class MIME::Type
449
454
  !!@registered
450
455
  end
451
456
  end
457
+
452
458
  def registered=(v) # :nodoc:
453
459
  @registered = v.nil? ? v : !!v
454
460
  end
@@ -472,6 +478,7 @@ class MIME::Type
472
478
  def signature?
473
479
  !!@signature
474
480
  end
481
+
475
482
  def signature=(v) # :nodoc:
476
483
  @signature = !!v
477
484
  end
@@ -550,7 +557,9 @@ class MIME::Type
550
557
  encode_with({})
551
558
  end
552
559
 
553
- # :stopdoc:
560
+ # Populates the +coder+ with attributes about this record for
561
+ # serialization. The structure of +coder+ should match the structure used
562
+ # with #init_with.
554
563
  def encode_with(coder)
555
564
  coder['content-type'] = @content_type
556
565
  coder['docs'] = @docs unless @docs.nil? or @docs.empty?
@@ -569,6 +578,8 @@ class MIME::Type
569
578
  coder
570
579
  end
571
580
 
581
+ # Initialize an empty object from +coder+, which must contain the
582
+ # attributes necessary for initializing an empty object.
572
583
  def init_with(coder)
573
584
  self.content_type = coder['content-type']
574
585
  self.docs = coder['docs'] || []
@@ -56,9 +56,7 @@ class MIME::Types::Loader
56
56
  # This method is aliased to #load.
57
57
  def load_json
58
58
  Dir[json_path].sort.each do |f|
59
- types = self.class.load_from_json(f).map { |type|
60
- MIME::Type.new(type)
61
- }
59
+ types = self.class.load_from_json(f)
62
60
  container.add(*types, :silent)
63
61
  end
64
62
  container
@@ -79,6 +77,7 @@ class MIME::Types::Loader
79
77
  container
80
78
  end
81
79
 
80
+ # Raised when a V1 format file is discovered.
82
81
  BadV1Format = Class.new(Exception)
83
82
 
84
83
  class << self
@@ -131,7 +130,7 @@ class MIME::Types::Loader
131
130
  item = line.chomp.strip
132
131
  next if item.empty?
133
132
 
134
- m = MIME::Types::Loader::V1_FORMAT.match(item)
133
+ m = V1_FORMAT.match(item)
135
134
 
136
135
  unless m
137
136
  warn <<-EOS
@@ -142,7 +141,7 @@ class MIME::Types::Loader
142
141
  end
143
142
 
144
143
  unregistered, obsolete, platform, mediatype, subtype, extensions,
145
- encoding, urls, docs, comment = *m.captures
144
+ encoding, urls, docs, _ = *m.captures
146
145
 
147
146
  next if mediatype.nil?
148
147
 
@@ -198,7 +197,7 @@ class MIME::Types::Loader
198
197
  # shipped with the mime-types library.
199
198
  def load_from_json(filename)
200
199
  require 'json'
201
- JSON.load(read_file(filename)).map { |type| MIME::Type.new(type) }
200
+ JSON.parse(read_file(filename)).map { |type| MIME::Type.new(type) }
202
201
  end
203
202
 
204
203
  private
@@ -222,18 +221,19 @@ class MIME::Types::Loader
222
221
 
223
222
  # The regular expression used to match a v1-format file-based MIME type
224
223
  # definition.
225
- MIME::Types::Loader::V1_FORMAT = # :nodoc:
224
+ V1_FORMAT = # :nodoc:
226
225
  %r{\A\s*
227
- ([*])? # 0: Unregistered?
228
- (!)? # 1: Obsolete?
229
- (?:(\w+):)? # 2: Platform marker
230
- #{MIME::Type::MEDIA_TYPE_RE}? # 3,4: Media type
231
- (?:\s+@(\S+))? # 5: Extensions
232
- (?:\s+:(base64|7bit|8bit|quoted\-printable))? # 6: Encoding
233
- (?:\s+'(\S+))? # 7: URL list
234
- (?:\s+=(.+))? # 8: Documentation
235
- (?:\s*([#].*)?)?
226
+ ([*])? # 0: Unregistered?
227
+ (!)? # 1: Obsolete?
228
+ (?:(\w+):)? # 2: Platform marker
229
+ ([-\w.+]+)/([-\w.+]*) # 3, 4: Media Type
230
+ (?:\s+@(\S+))? # 5: Extensions
231
+ (?:\s+:(base64|7bit|8bit|quoted\-printable))? # 6: Encoding
232
+ (?:\s+'(\S+))? # 7: URL list
233
+ (?:\s+=(.+))? # 8: Documentation
234
+ (?:\s*([#].*)?)? # Comments
236
235
  \s*
237
236
  \z
238
237
  }x
238
+ private_constant :V1_FORMAT
239
239
  end
data/support/convert.rb CHANGED
@@ -75,8 +75,6 @@ class Convert
75
75
  raise ArgumentError, ':from is required'
76
76
  end
77
77
 
78
- path = options[:path]
79
-
80
78
  @loader = MIME::Types::Loader.new(options[:path])
81
79
  load_from(options[:from])
82
80
  end
@@ -52,62 +52,8 @@ class IANARegistry
52
52
 
53
53
  def parse
54
54
  @registry.css('record').each do |record|
55
- subtype = record.at_css('name').text
56
- refs = record.css('xref').map do |xref|
57
- case xref["type"]
58
- when 'person'
59
- "[#{xref["data"]}]"
60
- when 'rfc'
61
- xref["data"].upcase
62
- when 'draft'
63
- "DRAFT:#{xref["data"].sub(/^RFC-/, 'draft-')}"
64
- when 'rfc-errata'
65
- "{RFC Errata #{xref["data"]}=http://www.rfc-editor.org/errata_search.php?eid=#{xref["data"]}}"
66
- when 'uri'
67
- # Fix a couple of known-broken links:
68
- case xref["data"]
69
- when /contact-people.htmll#Dolan\z/
70
- "[Dolan]"
71
- when /contact-people.htmll#Rottmann?\z/
72
- "[Frank_Rottman]"
73
- else
74
- "{#{xref["data"]}}"
75
- end
76
- when 'text'
77
- xref["data"]
78
- end
79
- end
80
-
81
- xrefs = MIME::Types::Container.new
82
- record.css('xref').map do |xref|
83
- type, data = xref["type"], xref["data"]
84
-
85
- case type
86
- when 'uri'
87
- case data
88
- when /contact-people.htmll#Dolan\z/
89
- type, data = "person", "Dolan"
90
- when /contact-people.htmll#Rottmann?\z/
91
- type, data = "person", "Frank_Rottman"
92
- end
93
- end
94
-
95
- xrefs[type] << data
96
- end
97
-
98
- record.css('file').each do |file|
99
- file_name = if file.text == subtype
100
- [ @type, subtype ].join('/')
101
- else
102
- file.text
103
- end
104
-
105
- if file["type"] == "template"
106
- refs << (ASSIGNMENT_FILE_REF % [ file_name, file_name ])
107
- end
108
-
109
- xrefs[file["type"]] << file_name
110
- end
55
+ subtype = record.at_css('name').text
56
+ refs, xrefs = parse_refs_and_files(record.css('xref'), record.css('file'))
111
57
 
112
58
  content_type = [ @type, subtype ].join('/')
113
59
  obsolete = record.at_css('obsolete')
@@ -151,4 +97,62 @@ class IANARegistry
151
97
  MIME::Types.new
152
98
  end
153
99
  end
100
+
101
+ def parse_refs_and_files(refs, files)
102
+ xr = MIME::Types::Container.new
103
+ r = []
104
+
105
+ refs.each do |xref|
106
+ type, data = xref["type"], xref["data"]
107
+
108
+ # Fix some known-broken links that are actually people.
109
+ if type == 'uri'
110
+ case data
111
+ when /contact-people.htmll#Dolan\z/
112
+ type, data = "person", "Dolan"
113
+ when /contact-people.htmll#Rottmann?\z/
114
+ type, data = "person", "Frank_Rottman"
115
+ else
116
+ nil # There’s no error with this URI.
117
+ end
118
+ end
119
+
120
+ r << xref_to_ref(type, data)
121
+
122
+ xrefs[type] << data
123
+ end
124
+
125
+ files.each do |file|
126
+ file_name = if file.text == subtype
127
+ [ @type, subtype ].join('/')
128
+ else
129
+ file.text
130
+ end
131
+
132
+ if file["type"] == "template"
133
+ refs << (ASSIGNMENT_FILE_REF % [ file_name, file_name ])
134
+ end
135
+
136
+ xrefs[file["type"]] << file_name
137
+ end
138
+
139
+ r, xr
140
+ end
141
+
142
+ def ref_from_type(type, data)
143
+ case type
144
+ when 'person'
145
+ "[#{data}]"
146
+ when 'rfc'
147
+ data.upcase
148
+ when 'draft'
149
+ "DRAFT:#{data.sub(/^RFC-/, 'draft-')}"
150
+ when 'rfc-errata'
151
+ "{RFC Errata #{data}=http://www.rfc-editor.org/errata_search.php?eid=#{data}}"
152
+ when 'uri'
153
+ "{#{data}}"
154
+ else # 'text' or something else
155
+ data
156
+ end
157
+ end
154
158
  end
@@ -101,7 +101,7 @@ class TestMIMEType < Minitest::Test
101
101
  assert_nil(MIME::Type.i18n_key('text'))
102
102
  end
103
103
 
104
- def test_CMP # '<=>'
104
+ def test_spaceship_compare # '<=>'
105
105
  assert(MIME::Type.new('text/plain') == MIME::Type.new('text/plain'))
106
106
  assert(MIME::Type.new('text/plain') != MIME::Type.new('image/jpeg'))
107
107
  assert(MIME::Type.new('text/plain') == 'text/plain')
@@ -167,11 +167,9 @@ class TestMIMEType < Minitest::Test
167
167
  assert_equal('base64', yaml.encoding)
168
168
  yaml.encoding = :default
169
169
  assert_equal('quoted-printable', yaml.encoding)
170
- begin
170
+ assert_raises(MIME::Type::InvalidEncoding) {
171
171
  yaml.encoding = 'binary'
172
- rescue MIME::Type::InvalidEncoding => ex
173
- assert_equal('Invalid Encoding "binary" (valid values are [nil, :default, "base64", "8bit", "7bit", "quoted-printable"]).', ex.message)
174
- end
172
+ }
175
173
  end
176
174
 
177
175
  def test_default_encoding
@@ -417,15 +415,18 @@ class TestMIMEType < Minitest::Test
417
415
  def test_to_hash
418
416
  yaml = make_yaml_mime_type
419
417
  assert_deprecated("MIME::Type#to_hash") do
420
- assert_equal({'Content-Type' => 'text/x-yaml',
421
- 'Content-Transfer-Encoding' => '8bit',
422
- 'Extensions' => %w(yaml yml),
423
- 'System' => /d9d172f608/,
424
- 'Registered' => false,
425
- 'URL' => [],
426
- 'Obsolete' => false,
427
- 'Docs' => nil },
428
- yaml.to_hash)
418
+ assert_equal(
419
+ {
420
+ 'Content-Type' => 'text/x-yaml',
421
+ 'Content-Transfer-Encoding' => '8bit',
422
+ 'Extensions' => %w(yaml yml),
423
+ 'System' => /d9d172f608/,
424
+ 'Registered' => false,
425
+ 'URL' => [],
426
+ 'Obsolete' => false,
427
+ 'Docs' => nil
428
+ },
429
+ yaml.to_hash)
429
430
  end
430
431
  end
431
432
 
@@ -15,7 +15,7 @@ class TestMIMETypes < Minitest::Test
15
15
  end
16
16
 
17
17
  def test_enumerable
18
- assert(@mime_types.any? {|type| type.content_type == 'text/plain'})
18
+ assert(@mime_types.any? { |type| type.content_type == 'text/plain' })
19
19
  assert_kind_of(Enumerator, @mime_types.each)
20
20
  assert_equal(6, @mime_types.each.count)
21
21
  end
@@ -56,6 +56,7 @@ class TestMIMETypes < Minitest::Test
56
56
  assert_empty(MIME::Types['text/plain', platform: true])
57
57
  end
58
58
  end
59
+
59
60
  def test_add
60
61
  eruby = MIME::Type.new("application/x-eruby") do |t|
61
62
  t.extensions = "rhtml"
@@ -9,7 +9,7 @@ class TestMIMETypesQueryClassMethods < Minitest::Test
9
9
  end
10
10
 
11
11
  def test_enumerable
12
- assert(MIME::Types.any? {|type| type.content_type == 'text/plain'})
12
+ assert(MIME::Types.any? { |type| type.content_type == 'text/plain' })
13
13
  assert_kind_of(Enumerator, MIME::Types.each)
14
14
  assert(MIME::Types.each.count > 999)
15
15
  end
@@ -18,7 +18,7 @@ class TestMIMETypesLoader < Minitest::Test
18
18
  assert_equal(%w(webm), types['audio/webm'].first.extensions)
19
19
  refute(types['audio/webm'].first.registered?)
20
20
 
21
- assert_equal("Fixes a bug with IE6 and progressive JPEGs",
21
+ assert_equal('Fixes a bug with IE6 and progressive JPEGs',
22
22
  types['image/pjpeg'].first.docs)
23
23
 
24
24
  assert(types['application/x-apple-diskimage'].first.system?)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mime-types
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 2.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Austin Ziegler
@@ -36,7 +36,7 @@ cert_chain:
36
36
  SHkzay9FVEZoaSs3cElVV2xGbzBpbXJkeUxoZCtKdzNib1ZqM0NtdnloY3dt
37
37
  cG9NMEs5bApBT21yVWlFbFVxTE9aQT09Ci0tLS0tRU5EIENFUlRJRklDQVRF
38
38
  LS0tLS0K
39
- date: 2014-10-07 00:00:00.000000000 Z
39
+ date: 2014-10-15 00:00:00.000000000 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
@@ -203,8 +203,11 @@ description: ! "The mime-types library provides a library and registry for infor
203
203
  incomplete; don't hesitate to to\nadd additional type definitions (see Contributing.rdoc).
204
204
  The primary sources\nfor MIME type definitions found in mime-types is the IANA collection
205
205
  of\nregistrations (see below for the link), RFCs, and W3C recommendations.\n\nThis
206
- is release 2.4.1 (2.4 was pulled), fixing a bug in observed use of the\nmime-types
207
- library where extensions were not previously sorted, such that\n\n MIME::Types.of('image.jpg').first.extensions.first\n\nreturned
206
+ is release 2.4.2, fixing bugs with unnecessary object duplication and\nusing JSON.parse
207
+ instead of JSON.load. These fixes improve the JSON registry\nloading time by about
208
+ 55% over previous 2.x releases. Cached registry load\ntimes are not changed. This
209
+ release builds on the 2.4.1 release, which fixed a\nbug in observed use of the mime-types
210
+ library where extensions were not\npreviously sorted, such that\n\n MIME::Types.of('image.jpg').first.extensions.first\n\nreturned
208
211
  a value of +jpeg+ in mime-types 1, but +jpe+ in mime-types 2. This was\nintroduced
209
212
  because extensions were sorted during assignment\n(MIME::Type#extensions=). This
210
213
  behaviour has been reverted to protect clients\nthat work as noted above. The preferred
metadata.gz.sig CHANGED
Binary file