mail-jenc 1.1.0 → 1.2.0

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: 659a351886afb57bc995d5059ba5a7771f342bb42543963abc18fcf7cfc2f232
4
- data.tar.gz: a7403f922e8aeff212f8da861c6cb12da21bd54823c10b800e2f471d0e5a2701
3
+ metadata.gz: 3f4d09dee3b6fcb41a2c89d36fa5d03612996fe805e2c641c2aef579056a37e6
4
+ data.tar.gz: c6ccc4f85aa7c1ac09cbaee529e1da56fd7404eca00a03a3191e66b53b93a591
5
5
  SHA512:
6
- metadata.gz: bec8d00b898b8b67bfe177aae5d40403f7b52f7a8477732091d51a1bbe8b82732a86f80b707371e3b4a0a155ae5eb60fe95310c4f28e6c4d13d5d10318da340b
7
- data.tar.gz: ef8a1742265b7b27302ee91f7081da69183073152a750f94c4db0d7f86e8aa7d582b3ddb46f4a0fcbab625989da79d6de307d85edc6d0517f68e14cd9f7803bb
6
+ metadata.gz: 7ab7f00be8087ab1300bb239112885cdb5b3135fe18fdeab33bf2c86e82baa3130e2756268c0296feb9fff609f64d7c3a721ce96259dbb9fd42dae57f5882cc7
7
+ data.tar.gz: e3cf8443136b5fe92bfdfaf5ffd5891c03151b65d96edc1a641414609d5e5edfb7b12008e93902e1b87e4830d432df0e372ae5ca54bc9de0233891f87c6f9b15
data/README.md CHANGED
@@ -25,10 +25,10 @@ Use mail as usual. You can enable/disable patched features as follows:
25
25
 
26
26
  ```ruby
27
27
  # disable patch
28
- Mail::Jenc.disable
28
+ Mail::Jenc.disable!
29
29
 
30
30
  # enable patch
31
- Mail::Jenc.enable
31
+ Mail::Jenc.enable!
32
32
  ```
33
33
 
34
34
  ## Contributing
@@ -6,7 +6,7 @@ module Mail
6
6
  def []=(name, value)
7
7
  if Jenc.enabled? && value.is_a?(Hash)
8
8
  charset = value.delete(:header_charset)
9
- rfc2231 = value.key?(:rfc2231) ? value.delete(:rfc2231) : Jenc.rfc2231
9
+ rfc2231 = value.key?(:rfc2231) ? value.delete(:rfc2231) : Jenc.config.rfc2231
10
10
 
11
11
  if name && name.encoding == Encoding::UTF_8 && charset
12
12
  mime_type = set_mime_type(name)
@@ -29,6 +29,4 @@ module Mail
29
29
  end
30
30
  end
31
31
 
32
- unless Mail::AttachmentsList.included_modules.include?(Mail::Jenc::AttachmentsListPatch)
33
- Mail::AttachmentsList.prepend Mail::Jenc::AttachmentsListPatch
34
- end
32
+ Mail::AttachmentsList.prepend Mail::Jenc::AttachmentsListPatch
@@ -5,7 +5,7 @@ module Mail
5
5
  class BEncoder
6
6
  class << self
7
7
  def encode(str, charset)
8
- if Jenc.escape_sequence_charsets.include?(charset.to_s.downcase)
8
+ if Jenc.config.escape_sequence_charsets.include?(charset.to_s.downcase)
9
9
  split(str).map { |s| transcode_and_encode(s, charset) }.join(' ')
10
10
  else
11
11
  transcode_and_encode(str, charset)
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mail
4
+ module Jenc
5
+ class Config
6
+ NAMES = [:enabled, :rfc2231, :escape_sequence_charsets, :preferred_charsets]
7
+ NAMES.each do |name|
8
+ attr_accessor name
9
+ end
10
+
11
+ def initialize(attrs = {})
12
+ attrs.each do |key, val|
13
+ send("#{key}=", val)
14
+ end
15
+ end
16
+
17
+ def attributes
18
+ NAMES.each_with_object({}) do |name, hash|
19
+ hash[name] = send(name)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -23,7 +23,5 @@ end
23
23
 
24
24
  klasses = ObjectSpace.each_object(Class).select { |klass| klass < Mail::CommonAddressField }
25
25
  klasses.each do |klass|
26
- unless klass.included_modules.include?(Mail::Jenc::CommonAddressFieldPatch)
27
- klass.prepend Mail::Jenc::CommonAddressFieldPatch
28
- end
26
+ klass.prepend Mail::Jenc::CommonAddressFieldPatch
29
27
  end
@@ -19,6 +19,4 @@ module Mail
19
19
  end
20
20
  end
21
21
 
22
- unless Mail::UnstructuredField.included_modules.include?(Mail::Jenc::UnstructuredFieldPatch)
23
- Mail::UnstructuredField.prepend Mail::Jenc::UnstructuredFieldPatch
24
- end
22
+ Mail::UnstructuredField.prepend Mail::Jenc::UnstructuredFieldPatch
@@ -36,6 +36,4 @@ module Mail
36
36
  end
37
37
  end
38
38
 
39
- unless Mail::Message.included_modules.include?(Mail::Jenc::MessagePatch)
40
- Mail::Message.prepend Mail::Jenc::MessagePatch
41
- end
39
+ Mail::Message.prepend Mail::Jenc::MessagePatch
@@ -14,13 +14,11 @@ module Mail
14
14
 
15
15
  class << self
16
16
  def preferred_charset(charset)
17
- Jenc.preferred_charsets[charset.to_s.downcase] || charset
17
+ Jenc.config.preferred_charsets[charset.to_s.downcase] || charset
18
18
  end
19
19
  end
20
20
  end
21
21
  end
22
22
  end
23
23
 
24
- unless Mail::Utilities.singleton_class.included_modules.include?(Mail::Jenc::UtilitiesPatch)
25
- Mail::Utilities.singleton_class.prepend Mail::Jenc::UtilitiesPatch
26
- end
24
+ Mail::Utilities.singleton_class.prepend Mail::Jenc::UtilitiesPatch
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Mail
4
4
  module Jenc
5
- VERSION = '1.1.0'
5
+ VERSION = '1.2.0'
6
6
  end
7
7
  end
data/lib/mail/jenc.rb CHANGED
@@ -9,30 +9,45 @@ end
9
9
  module Mail
10
10
  module Jenc
11
11
  class << self
12
- attr_reader :enabled
13
- attr_accessor :rfc2231
14
- attr_accessor :escape_sequence_charsets
15
- attr_accessor :preferred_charsets
12
+ @@config = Config.new(
13
+ enabled: true,
14
+ rfc2231: false,
15
+ escape_sequence_charsets: ['iso-2022-jp'],
16
+ preferred_charsets: {
17
+ 'iso-2022-jp' => 'cp50221',
18
+ 'shift_jis' => 'cp932'
19
+ }
20
+ )
21
+
22
+ def configure
23
+ yield @@config
24
+ end
25
+
26
+ THREAD_KEY = :_mail_jenc
27
+
28
+ def config
29
+ Thread.current[THREAD_KEY] || @@config
30
+ end
31
+
32
+ def with_config(hash = {})
33
+ old = Thread.current[THREAD_KEY]
34
+ Thread.current[THREAD_KEY] = Config.new(config.attributes.merge(hash))
35
+ yield
36
+ ensure
37
+ Thread.current[THREAD_KEY] = old
38
+ end
16
39
 
17
40
  def enabled?
18
- @@enabled
41
+ config.enabled
19
42
  end
20
43
 
21
- def enable
22
- @@enabled = true
44
+ def enable!
45
+ config.enabled = true
23
46
  end
24
47
 
25
- def disable
26
- @@enabled = false
48
+ def disable!
49
+ config.enabled = false
27
50
  end
28
51
  end
29
-
30
- self.enable
31
- self.rfc2231 = false
32
- self.escape_sequence_charsets = ['iso-2022-jp']
33
- self.preferred_charsets = {
34
- 'iso-2022-jp' => 'cp50221',
35
- 'shift_jis' => 'cp932'
36
- }
37
52
  end
38
53
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mail-jenc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoshikazu Kaneta
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-12 00:00:00.000000000 Z
11
+ date: 2023-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mail
@@ -78,6 +78,7 @@ files:
78
78
  - lib/mail/jenc.rb
79
79
  - lib/mail/jenc/attachments_list_patch.rb
80
80
  - lib/mail/jenc/b_encoder.rb
81
+ - lib/mail/jenc/config.rb
81
82
  - lib/mail/jenc/fields/address_field_patch.rb
82
83
  - lib/mail/jenc/fields/unstructured_field_patch.rb
83
84
  - lib/mail/jenc/message_patch.rb
@@ -89,7 +90,7 @@ homepage: https://github.com/kanety/mail-jenc
89
90
  licenses:
90
91
  - MIT
91
92
  metadata: {}
92
- post_install_message:
93
+ post_install_message:
93
94
  rdoc_options: []
94
95
  require_paths:
95
96
  - lib
@@ -104,8 +105,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
105
  - !ruby/object:Gem::Version
105
106
  version: '0'
106
107
  requirements: []
107
- rubygems_version: 3.2.22
108
- signing_key:
108
+ rubygems_version: 3.3.3
109
+ signing_key:
109
110
  specification_version: 4
110
111
  summary: A mail patch for encoding conventional mail
111
112
  test_files: []