email_address 0.1.15 → 0.1.16

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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af93d7667f03ada0b8a4a533e6adf19416079db72e1e152fd96fa1e851da0b27
4
- data.tar.gz: '06938a36efdfe7dc827e7f210e71f5d44431763a8d35b650aa6d39b69f280790'
3
+ metadata.gz: 46541e8de9140acd70cc23c1f60515c077ea919e0b04444a83d681e19fcbd4e1
4
+ data.tar.gz: 34f52f8bfa70a33d8e40c5986d1c9d4a49956a4c12d6bc69df8037705f76c417
5
5
  SHA512:
6
- metadata.gz: 98c07c4589f2bd1ada9ef41f0aa7c5069ddaf60ce721e7e07a0384c8a535686ad32b6d574128122c3fec866072cbc8dad105e11eca14c075d2cd2c655daacb06
7
- data.tar.gz: 79677817c08933c78fb0d25b631568e894c2d0c7fb9e20f7c71a871d4f8f7a698722d962887017705b4423be8f569d20632f0b60bb333ec7a77592d82c7a8c26
6
+ metadata.gz: adde7e6139b151e6759861a0b7054c7f179a7f590d8180141c31b786ebba81aba2d01657c4073158779e879ec27b3c76389679131061661dae46cf1f1c315b92
7
+ data.tar.gz: 3420904e9bbe4713bf6e57e7bd6d1d059c7616f529a650c07828c9e45eb1a1ce3566412d86358b8c04c335ad49f55aed1f5e715d08a7eb8e4e066a703231f28e
@@ -1,9 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.7.0
4
- - 2.3.7
4
+ - 2.3.0
5
5
  - jruby-9.2.9.0
6
- #- rbx
7
6
 
8
7
  addons:
9
8
  code_climate:
@@ -13,6 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = "https://github.com/afair/email_address"
14
14
  spec.license = "MIT"
15
15
 
16
+ #spec.required_ruby_version = ">= 2.3.0"
16
17
  spec.files = `git ls-files`.split($/)
17
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
@@ -23,14 +23,13 @@ module EmailAddress
23
23
  # instance, and initializes the address to the "normalized" format of the
24
24
  # address. The original string is available in the #original method.
25
25
  def initialize(email_address, config = {})
26
- @config = config # This needs refactoring!
26
+ @config = EmailAddress::Config.new(config)
27
27
  @original = email_address
28
28
  email_address = (email_address || "").strip
29
29
  email_address = parse_rewritten(email_address) unless config[:skip_rewrite]
30
30
  local, host = EmailAddress::Address.split_local_host(email_address)
31
31
 
32
- @host = EmailAddress::Host.new(host, config)
33
- @config = @host.config
32
+ @host = EmailAddress::Host.new(host, @config)
34
33
  @local = EmailAddress::Local.new(local, @config, @host)
35
34
  @error = @error_message = nil
36
35
  end
@@ -175,8 +175,7 @@ module EmailAddress
175
175
  def self.provider(name, config = {})
176
176
  name = name.to_sym
177
177
  if config.size > 0
178
- @providers[name] ||= @config.clone
179
- @providers[name].merge!(config)
178
+ @providers[name.to_sym] = config
180
179
  end
181
180
  @providers[name]
182
181
  end
@@ -199,5 +198,25 @@ module EmailAddress
199
198
  configs.each { |c| config.merge!(c) }
200
199
  config
201
200
  end
201
+
202
+ def initialize(overrides = {})
203
+ @config = EmailAddress::Config.all_settings(overrides)
204
+ end
205
+
206
+ def []=(setting, value)
207
+ @config[setting.to_sym] = value
208
+ end
209
+
210
+ def [](setting)
211
+ @config[setting.to_sym]
212
+ end
213
+
214
+ def configure(settings)
215
+ @config = @config.merge(settings)
216
+ end
217
+
218
+ def to_h
219
+ @config
220
+ end
202
221
  end
203
222
  end
@@ -24,7 +24,7 @@ module EmailAddress
24
24
 
25
25
  def initialize(host, config = {})
26
26
  @host = host
27
- @config = config
27
+ @config = config.is_a?(Hash) ? EmailAddress::Config.new(config) : config
28
28
  @dns_disabled = @config[:host_validation] == :syntax || @config[:dns_lookup] == :off
29
29
  end
30
30
 
@@ -87,7 +87,7 @@ module EmailAddress
87
87
  def initialize(host_name, config = {})
88
88
  @original = host_name ||= ""
89
89
  config[:host_type] ||= :email
90
- @config = config
90
+ @config = config.is_a?(Hash) ? EmailAddress::Config.new(config) : config
91
91
  @error = @error_message = nil
92
92
  parse(host_name)
93
93
  end
@@ -149,7 +149,7 @@ module EmailAddress
149
149
  if @config[:host_remove_spaces]
150
150
  @host_name = @host_name.delete(" ")
151
151
  end
152
- @dns_name = if /[^[:ascii:]]/.match?(host_name)
152
+ @dns_name = if /[^[:ascii:]]/.match(host_name)
153
153
  ::SimpleIDN.to_ascii(host_name)
154
154
  else
155
155
  host_name
@@ -227,8 +227,8 @@ module EmailAddress
227
227
  end
228
228
 
229
229
  def set_provider(name, provider_config = {}) # :nodoc:
230
- self.config = EmailAddress::Config.all_settings(provider_config, @config)
231
- self.provider = name
230
+ config.configure(provider_config)
231
+ @provider = name
232
232
  end
233
233
 
234
234
  # Returns a hash of the parts of the host name after parsing.
@@ -107,7 +107,7 @@ module EmailAddress
107
107
  %r/^([\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+)$/i.freeze
108
108
 
109
109
  def initialize(local, config={}, host=nil)
110
- self.config = config.empty? ? EmailAddress::Config.all_settings : config
110
+ @config = config.is_a?(Hash) ? EmailAddress::Config.new(config) : config
111
111
  self.local = local
112
112
  @host = host
113
113
  @error = @error_message = nil
@@ -130,10 +130,10 @@ module EmailAddress
130
130
  def parse(raw)
131
131
  if raw =~ /\A\"(.*)\"\z/ # Quoted
132
132
  raw = $1
133
- raw.gsub!(/\\(.)/, '\1') # Unescape
133
+ raw = raw.gsub(/\\(.)/, '\1') # Unescape
134
134
  elsif @config[:local_fix] && @config[:local_format] != :standard
135
- raw.gsub!(' ','')
136
- raw.gsub!(',','.')
135
+ raw = raw.gsub(' ','')
136
+ raw = raw.gsub(',','.')
137
137
  #raw.gsub!(/([^\p{L}\p{N}]{2,10})/) {|s| s[0] } # Stutter punctuation typo
138
138
  end
139
139
  raw, comment = self.parse_comment(raw)
@@ -226,7 +226,7 @@ module EmailAddress
226
226
  def relax
227
227
  form = self.mailbox
228
228
  form += @config[:tag_separator] + self.tag if self.tag
229
- form.gsub!(/[ \"\(\),:<>@\[\]\\]/,'')
229
+ form = form.gsub(/[ \"\(\),:<>@\[\]\\]/,'')
230
230
  form
231
231
  end
232
232
 
@@ -235,7 +235,7 @@ module EmailAddress
235
235
  form = self.mailbox
236
236
  form += @config[:tag_separator] + self.tag if self.tag
237
237
  form += "(" + self.comment + ")" if self.comment
238
- form.gsub!(/([\\\"])/, '\\\1') # Escape \ and "
238
+ form = form.gsub(/([\\\"])/, '\\\1') # Escape \ and "
239
239
  if form =~ /[ \"\(\),:<>@\[\\\]]/ # Space and "(),:;<>@[\]
240
240
  form = %Q("#{form}")
241
241
  end
@@ -1,3 +1,3 @@
1
1
  module EmailAddress
2
- VERSION = "0.1.15"
2
+ VERSION = "0.1.16"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: email_address
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.15
4
+ version: 0.1.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - Allen Fair
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-18 00:00:00.000000000 Z
11
+ date: 2020-03-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -183,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
183
183
  - !ruby/object:Gem::Version
184
184
  version: '0'
185
185
  requirements: []
186
- rubygems_version: 3.1.2
186
+ rubygems_version: 3.0.6
187
187
  signing_key:
188
188
  specification_version: 4
189
189
  summary: This gem provides a ruby language library for working with and validating