mime-types 3.2 → 3.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 68be96a28af41a771a3173cd5acd351b1ebf3636f3f1c39f5a17ae7a5423a25a
4
- data.tar.gz: dad93f4ca58c9d5e26850bf846692bb5d8673ab63018e9529ca79e18a964d9a3
3
+ metadata.gz: cdb4b5717fbcc056be60ca6acbc08a7c607c70844350473acf68aa4b6252e9e8
4
+ data.tar.gz: b52eacc82336979cd8665abcbc7a9caf6e77834ed159c2232259c5035270a165
5
5
  SHA512:
6
- metadata.gz: 1f946e0bb991ff49fa8295e781975a5bf56d865961625dc7a206654ea66679ec3d121b01a857e5dfe752457f72ac74831db08daf580db398ea8824218cfd1d65
7
- data.tar.gz: 93fdd664aa8076662f2921bbe18f6e5c9706f1079eda29d7167d0a5df1e100711a69482aee3557fc442c213d8e639fed7377fc0af9ad95fc91d04bc7969d93cf
6
+ metadata.gz: 0defd9a40587347fd82255474660e0d0463001d3cbda11884775ccb0a8c026fbd5b204ffefbaf3596222760174301510b5b4dec33545a87bda0a46c528e70740
7
+ data.tar.gz: 3498c00a5509138051422e425172b931e12ba0d77312fd7e79667607e7a1fe82c921f65e64abb6fdbb8278a3282a5d97db6cfced82293098c92138e26c7f2375
data/History.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 3.2.1 / 2018-08-12
2
+
3
+ * A few bugs related to MIME::Types::Container and its use in the
4
+ mime-types-data helper tools reared their head because I released 3.2
5
+ before verifying against mime-types-data.
6
+
1
7
  ## 3.2 / 2018-08-12
2
8
 
3
9
  * 2 minor enhancements
@@ -57,7 +57,7 @@ class MIME::Type
57
57
  end
58
58
 
59
59
  # The released version of the mime-types library.
60
- VERSION = '3.2'
60
+ VERSION = '3.2.1'
61
61
 
62
62
  include Comparable
63
63
 
@@ -368,13 +368,7 @@ class MIME::Type
368
368
 
369
369
  ##
370
370
  def xrefs=(x) # :nodoc:
371
- MIME::Types::Container.new.merge(x).tap do |xr|
372
- xr.each do |k, v|
373
- xr[k] = Set[*v] unless v.kind_of? Set
374
- end
375
-
376
- @xrefs = xr
377
- end
371
+ @xrefs = MIME::Types::Container.new(x)
378
372
  end
379
373
 
380
374
  # The decoded cross-reference URL list for this MIME::Type.
@@ -459,7 +453,7 @@ class MIME::Type
459
453
  unless xrefs.empty?
460
454
  {}.tap do |hash|
461
455
  xrefs.each do |k, v|
462
- hash[k] = v.sort.to_a
456
+ hash[k] = v.to_a.sort
463
457
  end
464
458
  coder['xrefs'] = hash
465
459
  end
@@ -12,20 +12,48 @@ require 'forwardable'
12
12
  class MIME::Types::Container #:nodoc:
13
13
  extend Forwardable
14
14
 
15
- def initialize
15
+ def initialize(hash = {})
16
16
  @container = {}
17
+ merge!(hash)
17
18
  end
18
19
 
19
20
  def [](key)
20
21
  container[key] || EMPTY_SET
21
22
  end
22
23
 
24
+ def []=(key, value)
25
+ case value
26
+ when Set
27
+ container[key] = value
28
+ else
29
+ container[key] = Set[*value]
30
+ end
31
+ end
32
+
33
+ def merge(other)
34
+ self.class.new(other)
35
+ end
36
+
37
+ def merge!(other)
38
+ tap {
39
+ other = other.kind_of?(MIME::Types::Container) ? other.container : other
40
+ self.container.merge!(other)
41
+ normalize
42
+ }
43
+ end
44
+
45
+ def to_hash
46
+ container
47
+ end
48
+
23
49
  def_delegators :@container,
50
+ :==,
24
51
  :count,
52
+ :each,
25
53
  :each_value,
54
+ :empty?,
55
+ :flat_map,
26
56
  :keys,
27
- :merge,
28
- :merge!,
29
57
  :select,
30
58
  :values
31
59
 
@@ -42,16 +70,25 @@ class MIME::Types::Container #:nodoc:
42
70
  end
43
71
 
44
72
  def encode_with(coder)
73
+ debugger
45
74
  container.each { |k, v| coder[k] = v.to_a }
46
75
  end
47
76
 
48
77
  def init_with(coder)
78
+ @container = {}
49
79
  coder.map.each { |k, v| container[k] = Set[*v] }
50
80
  end
51
81
 
52
- private
82
+ protected
53
83
 
54
- attr_reader :container
84
+ attr_accessor :container
85
+
86
+ def normalize
87
+ container.each do |k, v|
88
+ next if v.kind_of?(Set)
89
+ container[k] = Set[*v]
90
+ end
91
+ end
55
92
 
56
93
  EMPTY_SET = Set.new.freeze
57
94
  private_constant :EMPTY_SET
@@ -490,9 +490,7 @@ describe MIME::Type do
490
490
 
491
491
  describe '#xrefs, #xrefs=' do
492
492
  let(:expected) {
493
- {
494
- 'rfc' => Set[*%w(rfc1234 rfc5678)]
495
- }
493
+ MIME::Types::Container.new({ 'rfc' => Set[*%w(rfc1234 rfc5678)] })
496
494
  }
497
495
 
498
496
  it 'returns the expected results' do
@@ -44,9 +44,13 @@ describe MIME::Types, 'registry' do
44
44
  end
45
45
 
46
46
  it 'sorts by priority with multiple matches' do
47
- assert_equal %w(application/gzip application/x-gzip multipart/x-gzip),
48
- MIME::Types[/gzip$/]
49
- assert_equal 3, MIME::Types[/gzip$/].size
47
+ types = MIME::Types[/gzip$/].select { |t|
48
+ t == 'application/gzip' || t == 'application/x-gzip' || t == 'multipart/x-gzip'
49
+ }
50
+ # This is this way because of a new type ending with gzip that only
51
+ # appears in some data files.
52
+ assert_equal %w(application/gzip application/x-gzip multipart/x-gzip), types
53
+ assert_equal 3, types.size
50
54
  end
51
55
 
52
56
  it 'can be searched with a string' do
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: '3.2'
4
+ version: 3.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Austin Ziegler
@@ -338,7 +338,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
338
338
  version: '0'
339
339
  requirements: []
340
340
  rubyforge_project:
341
- rubygems_version: 2.7.6
341
+ rubygems_version: 2.7.7
342
342
  signing_key:
343
343
  specification_version: 4
344
344
  summary: The mime-types library provides a library and registry for information about