can_has_validations 1.7.0 → 1.8.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: bb51b71bb23aabfeb3e1bde9ad0f03119d4011d60c7117971c606266eb0c477a
4
- data.tar.gz: 5b101d95e237b874ff096f9658c064709aef19228c3444f6ed6878fb1f5cc1c5
3
+ metadata.gz: b019c7cb6040ee0139aaaeb3cac5e115cc144cf0b4fb8eef8a6182772704eeb3
4
+ data.tar.gz: 7b9cf22f18f2d29092f71c4eacbb26fafb3ea0bf667ae8cc4d203b80c84b9eff
5
5
  SHA512:
6
- metadata.gz: 82e3dc6177df9d32216bbefbbfeef97ccb4bebf22d5b8431c9d59393fd619f2d465b52f3c26eb84c551f35c154279e54c5689d595e699de0b65d211bc115c0ef
7
- data.tar.gz: fe709a9a7225cf2ea6eb7828c4d741b11c07181a32710d394972ddb424bc282d44d9f163388451671577ff0ebf96c28b3921f46d60b63e61f8be2384a0702e08
6
+ metadata.gz: 3604c217ef68acdccc4db9e87309522223722a00f1ab74b6cffb03a67e75450d629168a1f32afcaaf0833d0761e9b9d98cffc23ac65a0473c978d2263381d7d8
7
+ data.tar.gz: 1458eb8d69395bf07d745a8b84308aed359f801fdf103577c789a99d4440667a65c8f655f5f21cede6b6c6f83a5dc450bcd9eccb45d7eb30c54ee393326ebdd7
@@ -1,38 +1,40 @@
1
1
  # Ensure an attribute is generally formatted as an email.
2
2
  # eg: validates :user_email, email: true
3
+ # validates :user_email, email: {allow_unicode: true}
3
4
 
4
5
  require_relative 'hostname_validator'
5
6
 
6
7
  module ActiveModel::Validations
7
8
  class EmailValidator < ActiveModel::EachValidator
8
9
 
9
- EMAIL_REGEXP = /\A([a-z0-9._+-]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
10
- SEGMENT_REGEXP = /\A[a-z0-9+_-]+\z/i
11
- LABEL_REGEXP = HostnameValidator::LABEL_REGEXP
10
+ EMAIL_REGEXP = /\A([a-z0-9._+-]+)@((?:[a-z0-9-]+\.)+[a-z]{2,})\z/i
11
+ SEGMENT_REGEXP = /\A[a-z0-9_+-]+\z/i
12
+ LABEL_REGEXP = %r{\A([a-zA-Z0-9]([a-zA-Z0-9-]+)?)?[a-zA-Z0-9]\z}
13
+ # HostnameValidator::LABEL_REGEXP minus _/
12
14
  FINAL_LABEL_REGEXP = HostnameValidator::FINAL_LABEL_REGEXP
13
15
 
14
16
  def validate_each(record, attribute, value)
15
- unless email_valid?(value)
17
+ unless email_valid?(value, **options.slice(:allow_unicode))
16
18
  record.errors.add(attribute, :invalid_email, **options.merge(value: value))
17
19
  end
18
20
  end
19
21
 
20
- def email_valid?(value)
22
+ def email_valid?(value, allow_unicode: false)
21
23
  return unless value
22
- recipient, domain = value.split('@', 2)
24
+ recipient, domain = value.to_s.split('@', 2)
23
25
  is_valid = true
24
26
 
25
27
  recipient ||= ''
26
28
  is_valid &&= recipient.length <= 255
27
29
  is_valid &&= recipient !~ /\.\./
28
- is_valid &&= !recipient.starts_with?('.')
29
- is_valid &&= !recipient.ends_with?('.')
30
+ is_valid &&= !recipient.starts_with?('.')
31
+ is_valid &&= !recipient.ends_with?('.')
30
32
  recipient.split('.').each do |segment|
31
33
  is_valid &&= segment =~ SEGMENT_REGEXP
32
34
  end
33
35
 
34
36
  domain ||= ''
35
- if defined?(Addressable::IDNA)
37
+ if allow_unicode && defined?(Addressable::IDNA)
36
38
  domain &&= Addressable::IDNA.to_ascii(domain)
37
39
  end
38
40
  labels = domain.split('.')
@@ -12,7 +12,7 @@
12
12
  # If the addressable gem is present, will automatically turn unicode domains
13
13
  # into their punycode (xn--) equivalent. Otherwise, unicode characters will
14
14
  # cause the validation to fail.
15
- #
15
+ #
16
16
  # eg: validates :domain, hostname: true
17
17
  # validates :domain, hostname: {allow_wildcard: true}
18
18
  # allows '*.example.com'
@@ -52,7 +52,7 @@ module ActiveModel::Validations
52
52
  if defined?(Addressable::IDNA)
53
53
  value &&= Addressable::IDNA.to_ascii(value)
54
54
  end
55
- labels = value.split('.')
55
+ labels = value.split('.', -1)
56
56
 
57
57
  is_valid = true
58
58
  is_valid &&= value.length <= 255
@@ -1,3 +1,3 @@
1
1
  module CanHasValidations
2
- VERSION = '1.7.0'
2
+ VERSION = '1.8.1'
3
3
  end
@@ -1,22 +1,14 @@
1
-  (1.0ms) SELECT sqlite_version(*)
2
- TRANSACTION (0.1ms) begin transaction
1
+ TRANSACTION (0.0ms) begin transaction
3
2
  ---------------------------------
4
3
  CanHasValidationsTest: test_truth
5
4
  ---------------------------------
6
5
  TRANSACTION (0.0ms) rollback transaction
7
-  (0.8ms) SELECT sqlite_version(*)
8
- TRANSACTION (0.1ms) begin transaction
6
+ TRANSACTION (0.0ms) begin transaction
9
7
  ---------------------------------
10
8
  CanHasValidationsTest: test_truth
11
9
  ---------------------------------
12
10
  TRANSACTION (0.0ms) rollback transaction
13
-  (0.6ms) SELECT sqlite_version(*)
14
- TRANSACTION (0.1ms) begin transaction
15
- ---------------------------------
16
- CanHasValidationsTest: test_truth
17
- ---------------------------------
18
- TRANSACTION (0.0ms) rollback transaction
19
- TRANSACTION (0.1ms) begin transaction
11
+ TRANSACTION (0.0ms) begin transaction
20
12
  ---------------------------------
21
13
  CanHasValidationsTest: test_truth
22
14
  ---------------------------------
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: can_has_validations
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - thomas morgan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-20 00:00:00.000000000 Z
11
+ date: 2023-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '5.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7.1'
22
+ version: '7.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '5.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7.1'
32
+ version: '7.2'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rake
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -119,7 +119,6 @@ files:
119
119
  - test/dummy/config/routes.rb
120
120
  - test/dummy/config/storage.yml
121
121
  - test/dummy/db/test.sqlite3
122
- - test/dummy/log/development.log
123
122
  - test/dummy/log/test.log
124
123
  - test/dummy/public/404.html
125
124
  - test/dummy/public/422.html
@@ -147,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
146
  - !ruby/object:Gem::Version
148
147
  version: '0'
149
148
  requirements: []
150
- rubygems_version: 3.3.26
149
+ rubygems_version: 3.4.10
151
150
  signing_key:
152
151
  specification_version: 4
153
152
  summary: Assorted Rails 5.x-7.x validators
@@ -185,7 +184,6 @@ test_files:
185
184
  - test/dummy/config/storage.yml
186
185
  - test/dummy/config.ru
187
186
  - test/dummy/db/test.sqlite3
188
- - test/dummy/log/development.log
189
187
  - test/dummy/log/test.log
190
188
  - test/dummy/public/404.html
191
189
  - test/dummy/public/422.html
@@ -1,8 +0,0 @@
1
- DEPRECATION WARNING: Using legacy connection handling is deprecated. Please set
2
- `legacy_connection_handling` to `false` in your application.
3
-
4
- The new connection handling does not support `connection_handlers`
5
- getter and setter.
6
-
7
- Read more about how to migrate at: https://guides.rubyonrails.org/active_record_multiple_databases.html#migrate-to-the-new-connection-handling
8
- (called from require at script/rails:6)