mime-types 2.4.1 → 2.4.2

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 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