lite-validators 1.0.2 → 1.0.7

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: 52d4e3879099bb18f74ab8655b7b991bac25e53d8962293b801ee6dfc33959aa
4
- data.tar.gz: 6e0c40b97a41c659cb5c2e11a29d3ef526c90c255199d4cfa3ca9b1d570a2908
3
+ metadata.gz: aa4341244152d291308c7a9edd48e8d235f1657578a9eecd8d3d5d28b465d00a
4
+ data.tar.gz: b34592d551ef350f1b216fbd88f9ad7f8e0d11193ac9400d3e3eac0103b7653f
5
5
  SHA512:
6
- metadata.gz: 643b24bee5ab8aec7986b6ab2d0ed964698896ea38e290fa1aaea18d4e528ba88f4ccfde8a8958e972677dc608478ec741d738881ded14b5addbeaa59ef140d5
7
- data.tar.gz: 421ae434b7f4180221813cd72644e44e8a9a5c9314f4bc22647d64ac9c8760643a6f9d6067c62f56a688890ffbc25592cc912fb554208eadad74a4d6ad53e446
6
+ metadata.gz: 49a85d5b957728130ffcf4462bd7d3b6105723fcd7ee9c48c19f8946981f5e74ab8d4f9ad9422d42a267a22d8c3c1fb29685262e0825cb3fc6a150d408be3106
7
+ data.tar.gz: 47bf5ed04f21427556a67d7bb06f92f8015a4c7b2d452dce4d42ae97d98bc1eb97e53c378bb3f08e7e11cbf39911e24bbca4028136b23c426f023a8bd1d5c70c
@@ -2,11 +2,12 @@ require:
2
2
  - rubocop-performance
3
3
  - rubocop-rspec
4
4
  AllCops:
5
- TargetRubyVersion: 2.6
5
+ TargetRubyVersion: 2.7
6
+ NewCops: enable
6
7
  DisplayCopNames: true
7
8
  DisplayStyleGuide: true
8
- LineLength:
9
- Max: 100
9
+ Layout/EmptyLinesAroundAttributeAccessor:
10
+ Enabled: true
10
11
  Layout/EmptyLinesAroundBlockBody:
11
12
  Exclude:
12
13
  - 'spec/**/**/*'
@@ -14,6 +15,14 @@ Layout/EmptyLinesAroundClassBody:
14
15
  EnforcedStyle: empty_lines_except_namespace
15
16
  Layout/EmptyLinesAroundModuleBody:
16
17
  EnforcedStyle: empty_lines_except_namespace
18
+ Layout/LineLength:
19
+ Max: 100
20
+ Layout/SpaceAroundMethodCallOperator:
21
+ Enabled: true
22
+ Lint/RaiseException:
23
+ Enabled: true
24
+ Lint/StructNewOverride:
25
+ Enabled: true
17
26
  Metrics/BlockLength:
18
27
  Exclude:
19
28
  - 'spec/**/**/*'
@@ -23,6 +32,8 @@ Metrics/ClassLength:
23
32
  - 'lib/lite/validators/credit_card_validator.rb'
24
33
  RSpec/ExampleLength:
25
34
  Enabled: false
35
+ RSpec/LeakyConstantDeclaration:
36
+ Enabled: false
26
37
  RSpec/MultipleExpectations:
27
38
  Enabled: false
28
39
  Style/Documentation:
@@ -4,6 +4,7 @@ cache: bundler
4
4
  rvm:
5
5
  - 2.5
6
6
  - 2.6
7
+ - 2.7
7
8
  - ruby-head
8
9
  matrix:
9
10
  fast_finish: true
@@ -6,6 +6,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.0.7] - 2020-07-03
10
+ ### Added
11
+ - Added Ruby 2.7 support
12
+
13
+ ## [1.0.6] - 2019-09-18
14
+ ### Added
15
+ - Added true and false only checks to boolean validator
16
+
17
+ ## [1.0.5] - 2019-08-09
18
+ ### Added
19
+ - Added length check to Url validator
20
+
21
+ ## [1.0.4] - 2019-08-09
22
+ ### Added
23
+ - Added more boolean value checks
24
+
25
+ ## [1.0.3] - 2019-07-08
26
+ ### Added
27
+ - Require rails/railtie in railtie
28
+
9
29
  ## [1.0.2] - 2019-07-01
10
30
  ### Added
11
31
  - Add railtie
@@ -1,113 +1,120 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lite-validators (1.0.2)
4
+ lite-validators (1.0.7)
5
5
  activemodel
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- actionpack (5.2.3)
11
- actionview (= 5.2.3)
12
- activesupport (= 5.2.3)
13
- rack (~> 2.0)
10
+ actionpack (6.0.3.2)
11
+ actionview (= 6.0.3.2)
12
+ activesupport (= 6.0.3.2)
13
+ rack (~> 2.0, >= 2.0.8)
14
14
  rack-test (>= 0.6.3)
15
15
  rails-dom-testing (~> 2.0)
16
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
17
- actionview (5.2.3)
18
- activesupport (= 5.2.3)
16
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
17
+ actionview (6.0.3.2)
18
+ activesupport (= 6.0.3.2)
19
19
  builder (~> 3.1)
20
20
  erubi (~> 1.4)
21
21
  rails-dom-testing (~> 2.0)
22
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
23
- activemodel (5.2.3)
24
- activesupport (= 5.2.3)
25
- activesupport (5.2.3)
22
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
23
+ activemodel (6.0.3.2)
24
+ activesupport (= 6.0.3.2)
25
+ activesupport (6.0.3.2)
26
26
  concurrent-ruby (~> 1.0, >= 1.0.2)
27
27
  i18n (>= 0.7, < 2)
28
28
  minitest (~> 5.1)
29
29
  tzinfo (~> 1.1)
30
- ast (2.4.0)
31
- builder (3.2.3)
30
+ zeitwerk (~> 2.2, >= 2.2.2)
31
+ ast (2.4.1)
32
+ builder (3.2.4)
32
33
  colorize (0.8.1)
33
- concurrent-ruby (1.1.5)
34
- crass (1.0.4)
35
- diff-lcs (1.3)
36
- erubi (1.8.0)
37
- fasterer (0.5.1)
34
+ concurrent-ruby (1.1.6)
35
+ crass (1.0.6)
36
+ diff-lcs (1.4.4)
37
+ erubi (1.9.0)
38
+ fasterer (0.8.3)
38
39
  colorize (~> 0.7)
39
- ruby_parser (>= 3.13.0)
40
- i18n (1.6.0)
40
+ ruby_parser (>= 3.14.1)
41
+ i18n (1.8.3)
41
42
  concurrent-ruby (~> 1.0)
42
- jaro_winkler (1.5.3)
43
- loofah (2.2.3)
43
+ loofah (2.6.0)
44
44
  crass (~> 1.0.2)
45
45
  nokogiri (>= 1.5.9)
46
- method_source (0.9.2)
46
+ method_source (1.0.0)
47
47
  mini_portile2 (2.4.0)
48
- minitest (5.11.3)
49
- nokogiri (1.10.3)
48
+ minitest (5.14.1)
49
+ nokogiri (1.10.9)
50
50
  mini_portile2 (~> 2.4.0)
51
- parallel (1.17.0)
52
- parser (2.6.3.0)
53
- ast (~> 2.4.0)
54
- rack (2.0.7)
51
+ parallel (1.19.2)
52
+ parser (2.7.1.4)
53
+ ast (~> 2.4.1)
54
+ rack (2.2.3)
55
55
  rack-test (1.1.0)
56
56
  rack (>= 1.0, < 3)
57
57
  rails-dom-testing (2.0.3)
58
58
  activesupport (>= 4.2.0)
59
59
  nokogiri (>= 1.6)
60
- rails-html-sanitizer (1.0.4)
61
- loofah (~> 2.2, >= 2.2.2)
62
- railties (5.2.3)
63
- actionpack (= 5.2.3)
64
- activesupport (= 5.2.3)
60
+ rails-html-sanitizer (1.3.0)
61
+ loofah (~> 2.3)
62
+ railties (6.0.3.2)
63
+ actionpack (= 6.0.3.2)
64
+ activesupport (= 6.0.3.2)
65
65
  method_source
66
66
  rake (>= 0.8.7)
67
- thor (>= 0.19.0, < 2.0)
67
+ thor (>= 0.20.3, < 2.0)
68
68
  rainbow (3.0.0)
69
- rake (12.3.2)
70
- rspec (3.8.0)
71
- rspec-core (~> 3.8.0)
72
- rspec-expectations (~> 3.8.0)
73
- rspec-mocks (~> 3.8.0)
74
- rspec-core (3.8.2)
75
- rspec-support (~> 3.8.0)
76
- rspec-expectations (3.8.4)
69
+ rake (13.0.1)
70
+ regexp_parser (1.7.1)
71
+ rexml (3.2.4)
72
+ rspec (3.9.0)
73
+ rspec-core (~> 3.9.0)
74
+ rspec-expectations (~> 3.9.0)
75
+ rspec-mocks (~> 3.9.0)
76
+ rspec-core (3.9.2)
77
+ rspec-support (~> 3.9.3)
78
+ rspec-expectations (3.9.2)
77
79
  diff-lcs (>= 1.2.0, < 2.0)
78
- rspec-support (~> 3.8.0)
79
- rspec-mocks (3.8.1)
80
+ rspec-support (~> 3.9.0)
81
+ rspec-mocks (3.9.1)
80
82
  diff-lcs (>= 1.2.0, < 2.0)
81
- rspec-support (~> 3.8.0)
82
- rspec-rails (3.8.2)
83
- actionpack (>= 3.0)
84
- activesupport (>= 3.0)
85
- railties (>= 3.0)
86
- rspec-core (~> 3.8.0)
87
- rspec-expectations (~> 3.8.0)
88
- rspec-mocks (~> 3.8.0)
89
- rspec-support (~> 3.8.0)
90
- rspec-support (3.8.2)
91
- rubocop (0.72.0)
92
- jaro_winkler (~> 1.5.1)
83
+ rspec-support (~> 3.9.0)
84
+ rspec-rails (4.0.1)
85
+ actionpack (>= 4.2)
86
+ activesupport (>= 4.2)
87
+ railties (>= 4.2)
88
+ rspec-core (~> 3.9)
89
+ rspec-expectations (~> 3.9)
90
+ rspec-mocks (~> 3.9)
91
+ rspec-support (~> 3.9)
92
+ rspec-support (3.9.3)
93
+ rubocop (0.86.0)
93
94
  parallel (~> 1.10)
94
- parser (>= 2.6)
95
+ parser (>= 2.7.0.1)
95
96
  rainbow (>= 2.2.2, < 4.0)
97
+ regexp_parser (>= 1.7)
98
+ rexml
99
+ rubocop-ast (>= 0.0.3, < 1.0)
96
100
  ruby-progressbar (~> 1.7)
97
- unicode-display_width (>= 1.4.0, < 1.7)
98
- rubocop-performance (1.4.0)
101
+ unicode-display_width (>= 1.4.0, < 2.0)
102
+ rubocop-ast (0.1.0)
103
+ parser (>= 2.7.0.1)
104
+ rubocop-performance (1.6.1)
99
105
  rubocop (>= 0.71.0)
100
- rubocop-rspec (1.33.0)
101
- rubocop (>= 0.60.0)
106
+ rubocop-rspec (1.41.0)
107
+ rubocop (>= 0.68.1)
102
108
  ruby-progressbar (1.10.1)
103
- ruby_parser (3.13.1)
109
+ ruby_parser (3.14.2)
104
110
  sexp_processor (~> 4.9)
105
- sexp_processor (4.12.1)
106
- thor (0.20.3)
111
+ sexp_processor (4.15.0)
112
+ thor (1.0.1)
107
113
  thread_safe (0.3.6)
108
- tzinfo (1.2.5)
114
+ tzinfo (1.2.7)
109
115
  thread_safe (~> 0.1)
110
- unicode-display_width (1.6.0)
116
+ unicode-display_width (1.7.0)
117
+ zeitwerk (2.3.1)
111
118
 
112
119
  PLATFORMS
113
120
  ruby
@@ -125,4 +132,4 @@ DEPENDENCIES
125
132
  rubocop-rspec
126
133
 
127
134
  BUNDLED WITH
128
- 2.0.1
135
+ 2.1.4
data/README.md CHANGED
@@ -66,7 +66,7 @@ Or install it yourself as:
66
66
 
67
67
  ## 3rd-party
68
68
 
69
- The following are highly recommended 3rd party validators to supplement your workflow:
69
+ The following are highly recommended 3rd-party validators to supplement your workflow:
70
70
 
71
71
  * **DateTime:** Validates Timeliness - https://github.com/adzap/validates_timeliness
72
72
  * **Existence:** Validates Existence - https://github.com/perfectline/validates_existence
@@ -1,6 +1,10 @@
1
1
  en:
2
2
  errors:
3
3
  messages:
4
+ boolean:
5
+ all: "must be a true or false value"
6
+ false_only: "must be a false value"
7
+ true_only: "must be a true value"
4
8
  csv:
5
9
  in: "csv %{dimension} is not between %{min} and %{max}"
6
10
  greater_than: "csv %{dimension} is not greater than %{count}"
@@ -8,12 +8,19 @@
8
8
  'false values' => [false, 0, '0', 'f', 'F', 'false', 'FALSE']
9
9
  ```
10
10
 
11
+ #### Options
12
+
13
+ Option | Type | Available | Default
14
+ --- | --- | --- | ---
15
+ check | symbol | all, false_only, true_only | all
16
+
11
17
  #### Usage
12
18
 
13
19
  ```ruby
14
20
  class User < ActiveRecord::Base
15
21
 
16
22
  validates :input_0, boolean: true
23
+ validates :input_1, boolean: { check: :true_only }
17
24
 
18
25
  end
19
26
  ```
@@ -2,8 +2,8 @@
2
2
 
3
3
  class Base64Validator < BaseValidator
4
4
 
5
- # rubocop:disable Metrics/LineLength
5
+ # rubocop:disable Layout/LineLength
6
6
  REGEXP ||= /^(?:[A-Za-z0-9+$]{4})*(?:[A-Za-z0-9+$]{2}==|[A-Za-z0-9+$]{3}=|[A-Za-z0-9+$]{4})$/.freeze
7
- # rubocop:enable Metrics/LineLength
7
+ # rubocop:enable Layout/LineLength
8
8
 
9
9
  end
@@ -19,7 +19,7 @@ class BaseValidator < ActiveModel::EachValidator
19
19
  @value = value
20
20
  end
21
21
 
22
- # rubocop:disable Metrics/LineLength
22
+ # rubocop:disable Layout/LineLength
23
23
  def assert_valid_option!(name, collection, option: nil)
24
24
  option ||= send(name)
25
25
 
@@ -29,7 +29,7 @@ class BaseValidator < ActiveModel::EachValidator
29
29
  raise ArgumentError, "Unknown #{name}: #{option_value.inspect}. Valid options are: #{collection.map(&:inspect).join(', ')}"
30
30
  end
31
31
  end
32
- # rubocop:enable Metrics/LineLength
32
+ # rubocop:enable Layout/LineLength
33
33
 
34
34
  def error_message
35
35
  [options[:message] || :invalid]
@@ -2,14 +2,34 @@
2
2
 
3
3
  class BooleanValidator < BaseValidator
4
4
 
5
- VALUES ||= %w[
6
- 1 0 t f true false
7
- ].freeze
5
+ CHECKS ||= {
6
+ all: nil,
7
+ false_only: %w[0 f false n no off],
8
+ true_only: %w[1 t true y yes on]
9
+ }.freeze
10
+
11
+ def validate_each(record, attribute, value)
12
+ assert_valid_check!
13
+ super
14
+ end
8
15
 
9
16
  private
10
17
 
18
+ def assert_valid_check!
19
+ assert_valid_option!(:check, CHECKS.keys)
20
+ end
21
+
22
+ def check
23
+ options[:check] || :all
24
+ end
25
+
26
+ def error_message
27
+ [options[:message] || I18n.t("errors.messages.boolean.#{check}")]
28
+ end
29
+
11
30
  def valid_attr?
12
- VALUES.include?(value.to_s.downcase)
31
+ checks = CHECKS[check] || [].concat(CHECKS[:false_only], CHECKS[:true_only])
32
+ checks.include?(value.to_s.downcase)
13
33
  end
14
34
 
15
35
  end
@@ -19,7 +19,7 @@ class CsvValidator < FileSizeValidator
19
19
 
20
20
  private
21
21
 
22
- # rubocop:disable Metrics/LineLength, Style/GuardClause
22
+ # rubocop:disable Layout/LineLength, Style/GuardClause
23
23
  def assert_valid_dimensions!
24
24
  if dimensions.empty?
25
25
  raise ArgumentError, "Missing atleast one dimension of #{DIMENSIONS.map(&:inspect).join(', ')} attribute for comparison."
@@ -27,7 +27,7 @@ class CsvValidator < FileSizeValidator
27
27
  assert_valid_option!(:dimensions, DIMENSIONS)
28
28
  end
29
29
  end
30
- # rubocop:enable Metrics/LineLength, Style/GuardClause
30
+ # rubocop:enable Layout/LineLength, Style/GuardClause
31
31
 
32
32
  def csv_dimensions(path)
33
33
  dimension = { columns: 0, rows: 0 }
@@ -52,7 +52,7 @@ class CsvValidator < FileSizeValidator
52
52
  def error_message_for(dimension, check, check_value)
53
53
  options[:message] || I18n.t(
54
54
  "errors.messages.csv.#{check}",
55
- error_options(check_value).merge(dimension: dimension)
55
+ **error_options(check_value).merge(dimension: dimension)
56
56
  )
57
57
  end
58
58
 
@@ -20,7 +20,7 @@ class FileSizeValidator < BaseValidator
20
20
 
21
21
  private
22
22
 
23
- # rubocop:disable Metrics/LineLength, Style/GuardClause
23
+ # rubocop:disable Layout/LineLength, Style/GuardClause
24
24
  def assert_valid_checks!
25
25
  if checks.empty?
26
26
  raise ArgumentError, "Missing atleast one check of #{CHECKS.keys.map(&:inspect).join(', ')} attribute for comparison."
@@ -28,7 +28,7 @@ class FileSizeValidator < BaseValidator
28
28
  assert_valid_option!(:checks, CHECKS.keys)
29
29
  end
30
30
  end
31
- # rubocop:enable Metrics/LineLength, Style/GuardClause
31
+ # rubocop:enable Layout/LineLength, Style/GuardClause
32
32
 
33
33
  def checks
34
34
  options.keys & CHECKS.keys
@@ -37,7 +37,7 @@ class FileSizeValidator < BaseValidator
37
37
  def error_message_for(option, option_value)
38
38
  options[:message] || I18n.t(
39
39
  "errors.messages.file_size.#{option}",
40
- error_options(option_value)
40
+ **error_options(option_value)
41
41
  )
42
42
  end
43
43
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  class ImeiValidator < BaseValidator
4
4
 
5
- REGEXP ||= /\A[\d\.\:\-\s]+\z/i.freeze
5
+ REGEXP ||= /\A[\d.:\-\s]+\z/i.freeze
6
6
 
7
7
  private
8
8
 
@@ -2,9 +2,9 @@
2
2
 
3
3
  class IsinValidator < BaseValidator
4
4
 
5
- # rubocop:disable Metrics/LineLength
5
+ # rubocop:disable Layout/LineLength
6
6
  REGEXP ||= /^((AF|AX|AL|DZ|AS|AD|AO|AI|AQ|AG|AR|AM|AW|AU|AT|AZ|BS|BH|BD|BB|BY|BE|BZ|BJ|BM|BT|BO|BQ|BA|BW|BV|BR|IO|BN|BG|BF|BI|KH|CM|CA|CV|KY|CF|TD|CL|CN|CX|CC|CO|KM|CG|CD|CK|CR|CI|HR|CU|CW|CY|CZ|DK|DJ|DM|DO|EC|EG|SV|GQ|ER|EE|ET|FK|FO|FJ|FI|FR|GF|PF|TF|GA|GM|GE|DE|GH|GI|GR|GL|GD|GP|GU|GT|GG|GN|GW|GY|HT|HM|VA|HN|HK|HU|IS|IN|ID|IR|IQ|IE|IM|IL|IT|JM|JP|JE|JO|KZ|KE|KI|KP|KR|KW|KG|LA|LV|LB|LS|LR|LY|LI|LT|LU|MO|MK|MG|MW|MY|MV|ML|MT|MH|MQ|MR|MU|YT|MX|FM|MD|MC|MN|ME|MS|MA|MZ|MM|NA|NR|NP|NL|NC|NZ|NI|NE|NG|NU|NF|MP|NO|OM|PK|PW|PS|PA|PG|PY|PE|PH|PN|PL|PT|PR|QA|RE|RO|RU|RW|BL|SH|KN|LC|MF|PM|VC|WS|SM|ST|SA|SN|RS|SC|SL|SG|SX|SK|SI|SB|SO|ZA|GS|SS|ES|LK|SD|SR|SJ|SZ|SE|CH|SY|TW|TJ|TZ|TH|TL|TG|TK|TO|TT|TN|TR|TM|TC|TV|UG|UA|AE|GB|US|UM|UY|UZ|VU|VE|VN|VG|VI|WF|EH|YE|ZM|ZW{2})([A-Z0-9]{9}))(\d{1})$/.freeze
7
- # rubocop:enable Metrics/LineLength
7
+ # rubocop:enable Layout/LineLength
8
8
 
9
9
  private
10
10
 
@@ -12,7 +12,7 @@ class IsinValidator < BaseValidator
12
12
  valid_regexp? && valid_checksum?
13
13
  end
14
14
 
15
- # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
15
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
16
16
  def valid_checksum?
17
17
  characters = value.chars
18
18
  digits = characters.map { |chr| /[A-Z]/.match?(chr) ? (chr.ord - 55) : chr.to_i }
@@ -31,6 +31,6 @@ class IsinValidator < BaseValidator
31
31
 
32
32
  (10 - (total % 10)) % 10
33
33
  end
34
- # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
34
+ # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength
35
35
 
36
36
  end
@@ -3,10 +3,10 @@
3
3
  class MacAddressValidator < BaseValidator
4
4
 
5
5
  REGEXP ||= [
6
- /^([\h]{2}[-|\.:|\s]){5}[\h]{2}?$/i,
7
- /^([\h]{4}[-|\.:|\s]){2}[\h]{4}?$/i,
8
- /^([\h]{6}[-|\.:|\s])[\h]{6}?$/i,
9
- /^[\h]{12}?$/i
6
+ /^(\h{2}[-|.:|\s]){5}\h{2}?$/i,
7
+ /^(\h{4}[-|.:|\s]){2}\h{4}?$/i,
8
+ /^(\h{6}[-|.:|\s])\h{6}?$/i,
9
+ /^\h{12}?$/i
10
10
  ].freeze
11
11
 
12
12
  private
@@ -2,6 +2,6 @@
2
2
 
3
3
  class PhoneNumberValidator < BaseValidator
4
4
 
5
- REGEXP ||= %r{^[0-9+\(\)#\.\s/ext-]+$}.freeze
5
+ REGEXP ||= %r{^[0-9+()#.\s/ext-]+$}.freeze
6
6
 
7
7
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'rails/railtie'
4
+
3
5
  module Lite
4
6
  module Validators
5
7
  class Railtie < ::Rails::Railtie
@@ -2,6 +2,6 @@
2
2
 
3
3
  class SsnValidator < BaseValidator
4
4
 
5
- REGEXP ||= /^\A([\d]{3}\-[\d]{2}\-[\d]{4}|[\d]{9})\Z$/.freeze
5
+ REGEXP ||= /^\A(\d{3}-\d{2}-\d{4}|\d{9})\Z$/.freeze
6
6
 
7
7
  end
@@ -10,7 +10,7 @@ class UrlValidator < BaseValidator
10
10
 
11
11
  def validate_each(record, attribute, value)
12
12
  assign_attr_readers(record, attribute, URI.parse(value.to_s))
13
- valid?
13
+ valid_attr?
14
14
  rescue URI::InvalidURIError
15
15
  record.errors.add(attribute, *error_message)
16
16
  end
@@ -26,6 +26,8 @@ class UrlValidator < BaseValidator
26
26
  end
27
27
 
28
28
  def valid_attr?
29
+ raise URI::InvalidURIError if value.to_s.strip.empty?
30
+
29
31
  valid_uri? && valid_domain? && valid_scheme? && valid_root?
30
32
  end
31
33
 
@@ -3,7 +3,7 @@
3
3
  module Lite
4
4
  module Validators
5
5
 
6
- VERSION ||= '1.0.2'
6
+ VERSION ||= '1.0.7'
7
7
 
8
8
  end
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lite-validators
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Gomez
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-07-01 00:00:00.000000000 Z
11
+ date: 2020-07-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -150,7 +150,7 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
- description:
153
+ description:
154
154
  email:
155
155
  - j.gomez@drexed.com
156
156
  executables: []
@@ -245,7 +245,7 @@ homepage: http://drexed.github.io/lite-validators
245
245
  licenses:
246
246
  - MIT
247
247
  metadata: {}
248
- post_install_message:
248
+ post_install_message:
249
249
  rdoc_options: []
250
250
  require_paths:
251
251
  - lib
@@ -260,8 +260,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
260
260
  - !ruby/object:Gem::Version
261
261
  version: '0'
262
262
  requirements: []
263
- rubygems_version: 3.0.4
264
- signing_key:
263
+ rubygems_version: 3.1.4
264
+ signing_key:
265
265
  specification_version: 4
266
266
  summary: Collection of ActiveModel/ActiveRecord validators
267
267
  test_files: []