lite-validators 1.0.4 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +16 -3
  3. data/.travis.yml +1 -0
  4. data/CHANGELOG.md +20 -0
  5. data/Gemfile.lock +79 -70
  6. data/config/locales/en.yml +4 -0
  7. data/docs/ALPHA.md +3 -3
  8. data/docs/ALPHA_NUMERIC.md +3 -3
  9. data/docs/BASE64.md +1 -1
  10. data/docs/BOOLEAN.md +8 -1
  11. data/docs/COMPARE.md +1 -1
  12. data/docs/COORDINATE.md +2 -2
  13. data/docs/CREDIT_CARD.md +2 -2
  14. data/docs/CSV.md +3 -3
  15. data/docs/CURRENCY.md +1 -1
  16. data/docs/CUSIP.md +1 -1
  17. data/docs/EMAIL.md +3 -3
  18. data/docs/FILE_CONTENT_TYPE.md +3 -3
  19. data/docs/FILE_EXTENSION.md +2 -2
  20. data/docs/FILE_SIZE.md +3 -3
  21. data/docs/HEX.md +1 -1
  22. data/docs/IMEI.md +1 -1
  23. data/docs/IP_ADDRESS.md +2 -2
  24. data/docs/ISBN.md +1 -1
  25. data/docs/ISIN.md +1 -1
  26. data/docs/MAC_ADDRESS.md +1 -1
  27. data/docs/NAME.md +1 -1
  28. data/docs/PASSWORD.md +2 -2
  29. data/docs/PHONE_NUMBER.md +1 -1
  30. data/docs/SEDOL.md +1 -1
  31. data/docs/SLUG.md +1 -1
  32. data/docs/SSN.md +1 -1
  33. data/docs/TIME_ZONE.md +1 -1
  34. data/docs/TYPE.md +5 -5
  35. data/docs/URL.md +4 -4
  36. data/docs/USERNAME.md +2 -2
  37. data/docs/UUID.md +2 -2
  38. data/lib/lite/validators/base64_validator.rb +2 -2
  39. data/lib/lite/validators/base_validator.rb +3 -3
  40. data/lib/lite/validators/boolean_validator.rb +24 -4
  41. data/lib/lite/validators/credit_card_validator.rb +1 -1
  42. data/lib/lite/validators/csv_validator.rb +3 -3
  43. data/lib/lite/validators/file_content_type_validator.rb +1 -1
  44. data/lib/lite/validators/file_extension_validator.rb +1 -3
  45. data/lib/lite/validators/file_size_validator.rb +3 -3
  46. data/lib/lite/validators/imei_validator.rb +1 -1
  47. data/lib/lite/validators/isin_validator.rb +5 -5
  48. data/lib/lite/validators/mac_address_validator.rb +4 -4
  49. data/lib/lite/validators/phone_number_validator.rb +1 -1
  50. data/lib/lite/validators/ssn_validator.rb +1 -1
  51. data/lib/lite/validators/type_validator.rb +1 -1
  52. data/lib/lite/validators/url_validator.rb +7 -5
  53. data/lib/lite/validators/username_validator.rb +1 -1
  54. data/lib/lite/validators/version.rb +1 -1
  55. metadata +7 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: af89c7b65c88e377793dfbb86b5ba04299ded9b1732d67316704632bbeb61e01
4
- data.tar.gz: 8e6f7d70928f4e90a98342387997c41a66c77c01d880060958a666e1392bac84
3
+ metadata.gz: 1be3cd4946e7ee9b2cd3f5990eb9fd3198bb259f6a445f9210d1ad6a6b1faaa3
4
+ data.tar.gz: d001d6846a211a1c012728bc079fdd8c826f084d10b7615f65a356a7f9bf73bd
5
5
  SHA512:
6
- metadata.gz: 9aad3aea74b1ddc245e5f2eb1b023a1f23f8bca17d713c1a3ff406983850094dca79f610e03b4a46c94f4232a4ecc37136c5708ef706c507ec2c3e26795b0b84
7
- data.tar.gz: aa607e243448fb631fc58723cb0ddaa51c7151bb38841c2b423db2dde48370c0c596d865c328c8e3845e4d84d04b683dee1f9b13e2a61decdef616a7ddbb6815
6
+ metadata.gz: de257879224b9b795f092e274343b3144f313bbdd78ea35eb5137b8158a2cae711f61156179d10cc597932db348897346ca8bf5238ca973bc6dbcce9d11577ac
7
+ data.tar.gz: 36ed0841dca53ee8570afdcdd76e12d793b8a9e797a06b73379307978294ae4a0ff3a5f292fa52d5f73fe9ddb14254a1289236f23d669e9b08bf8c777ea43936
@@ -2,11 +2,14 @@ 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
+ Gemspec/RequiredRubyVersion:
10
+ Enabled: false
11
+ Layout/EmptyLinesAroundAttributeAccessor:
12
+ Enabled: true
10
13
  Layout/EmptyLinesAroundBlockBody:
11
14
  Exclude:
12
15
  - 'spec/**/**/*'
@@ -14,6 +17,16 @@ Layout/EmptyLinesAroundClassBody:
14
17
  EnforcedStyle: empty_lines_except_namespace
15
18
  Layout/EmptyLinesAroundModuleBody:
16
19
  EnforcedStyle: empty_lines_except_namespace
20
+ Layout/LineLength:
21
+ Max: 100
22
+ Layout/SpaceAroundMethodCallOperator:
23
+ Enabled: true
24
+ Lint/ConstantDefinitionInBlock:
25
+ Enabled: false
26
+ Lint/RaiseException:
27
+ Enabled: true
28
+ Lint/StructNewOverride:
29
+ Enabled: true
17
30
  Metrics/BlockLength:
18
31
  Exclude:
19
32
  - 'spec/**/**/*'
@@ -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.1.1] - 2020-06-06
10
+ ### Updated
11
+ - Improve mac address regex
12
+
13
+ ## [1.1.0] - 2020-09-04
14
+ ### Updated
15
+ - Updated username regex
16
+
17
+ ## [1.0.7] - 2020-07-03
18
+ ### Added
19
+ - Added Ruby 2.7 support
20
+
21
+ ## [1.0.6] - 2019-09-18
22
+ ### Added
23
+ - Added true and false only checks to boolean validator
24
+
25
+ ## [1.0.5] - 2019-08-09
26
+ ### Added
27
+ - Added length check to Url validator
28
+
9
29
  ## [1.0.4] - 2019-08-09
10
30
  ### Added
11
31
  - Added more boolean value checks
@@ -1,113 +1,122 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- lite-validators (1.0.4)
4
+ lite-validators (1.1.1)
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.4)
11
+ actionview (= 6.0.3.4)
12
+ activesupport (= 6.0.3.4)
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.4)
18
+ activesupport (= 6.0.3.4)
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.4)
24
+ activesupport (= 6.0.3.4)
25
+ activesupport (6.0.3.4)
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.6.0)
34
+ concurrent-ruby (1.1.7)
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.5)
41
42
  concurrent-ruby (~> 1.0)
42
- jaro_winkler (1.5.3)
43
- loofah (2.2.3)
43
+ loofah (2.7.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.2)
49
+ nokogiri (1.10.10)
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.2.0)
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.2.0)
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.4)
63
+ actionpack (= 6.0.3.4)
64
+ activesupport (= 6.0.3.4)
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.3)
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.8.2)
71
+ rexml (3.2.4)
72
+ rspec (3.10.0)
73
+ rspec-core (~> 3.10.0)
74
+ rspec-expectations (~> 3.10.0)
75
+ rspec-mocks (~> 3.10.0)
76
+ rspec-core (3.10.0)
77
+ rspec-support (~> 3.10.0)
78
+ rspec-expectations (3.10.0)
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.10.0)
81
+ rspec-mocks (3.10.0)
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.74.0)
92
- jaro_winkler (~> 1.5.1)
83
+ rspec-support (~> 3.10.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.10.0)
93
+ rubocop (1.2.0)
93
94
  parallel (~> 1.10)
94
- parser (>= 2.6)
95
+ parser (>= 2.7.1.5)
95
96
  rainbow (>= 2.2.2, < 4.0)
97
+ regexp_parser (>= 1.8)
98
+ rexml
99
+ rubocop-ast (>= 1.0.1)
96
100
  ruby-progressbar (~> 1.7)
97
- unicode-display_width (>= 1.4.0, < 1.7)
98
- rubocop-performance (1.4.1)
99
- rubocop (>= 0.71.0)
100
- rubocop-rspec (1.35.0)
101
- rubocop (>= 0.60.0)
101
+ unicode-display_width (>= 1.4.0, < 2.0)
102
+ rubocop-ast (1.1.1)
103
+ parser (>= 2.7.1.5)
104
+ rubocop-performance (1.8.1)
105
+ rubocop (>= 0.87.0)
106
+ rubocop-ast (>= 0.4.0)
107
+ rubocop-rspec (2.0.0)
108
+ rubocop (~> 1.0)
109
+ rubocop-ast (>= 1.1.0)
102
110
  ruby-progressbar (1.10.1)
103
- ruby_parser (3.13.1)
111
+ ruby_parser (3.15.0)
104
112
  sexp_processor (~> 4.9)
105
- sexp_processor (4.12.1)
106
- thor (0.20.3)
113
+ sexp_processor (4.15.1)
114
+ thor (1.0.1)
107
115
  thread_safe (0.3.6)
108
- tzinfo (1.2.5)
116
+ tzinfo (1.2.7)
109
117
  thread_safe (~> 0.1)
110
- unicode-display_width (1.6.0)
118
+ unicode-display_width (1.7.0)
119
+ zeitwerk (2.4.1)
111
120
 
112
121
  PLATFORMS
113
122
  ruby
@@ -125,4 +134,4 @@ DEPENDENCIES
125
134
  rubocop-rspec
126
135
 
127
136
  BUNDLED WITH
128
- 2.0.1
137
+ 2.1.4
@@ -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}"
@@ -21,9 +21,9 @@ allow_space | boolean | true, false | false
21
21
  ```ruby
22
22
  class User < ActiveRecord::Base
23
23
 
24
- validates :input_0, alpha: true
25
- validates :input_1, alpha: { case: :lower }
26
- validates :input_2, alpha: { allow_space: true }
24
+ validates :input0, alpha: true
25
+ validates :input1, alpha: { case: :lower }
26
+ validates :input2, alpha: { allow_space: true }
27
27
 
28
28
  end
29
29
  ```
@@ -21,9 +21,9 @@ allow_space | boolean | true, false | false
21
21
  ```ruby
22
22
  class User < ActiveRecord::Base
23
23
 
24
- validates :input_0, alpha_numeric: true
25
- validates :input_1, alpha_numeric: { case: :lower }
26
- validates :input_2, alpha_numeric: { allow_space: true }
24
+ validates :input0, alpha_numeric: true
25
+ validates :input1, alpha_numeric: { case: :lower }
26
+ validates :input2, alpha_numeric: { allow_space: true }
27
27
 
28
28
  end
29
29
  ```
@@ -12,7 +12,7 @@
12
12
  ```ruby
13
13
  class User < ActiveRecord::Base
14
14
 
15
- validates :input_0, base64: true
15
+ validates :input0, base64: true
16
16
 
17
17
  end
18
18
  ```
@@ -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
- validates :input_0, boolean: true
22
+ validates :input0, boolean: true
23
+ validates :input1, boolean: { check: :true_only }
17
24
 
18
25
  end
19
26
  ```
@@ -24,7 +24,7 @@ to | symbol | |
24
24
  ```ruby
25
25
  class User < ActiveRecord::Base
26
26
 
27
- validates :input_0, equality: { to: :input_1, check: :less_than }
27
+ validates :input0, equality: { to: :input1, check: :less_than }
28
28
 
29
29
  end
30
30
  ```
@@ -20,8 +20,8 @@ boundary | symbol | latitude, longitude, pair | pair
20
20
  ```ruby
21
21
  class User < ActiveRecord::Base
22
22
 
23
- validates :input_0, coordinate: true
24
- validates :input_1, coordinate: { boundary: :latitude }
23
+ validates :input0, coordinate: true
24
+ validates :input1, coordinate: { boundary: :latitude }
25
25
 
26
26
  end
27
27
  ```
@@ -22,8 +22,8 @@ provider | symbol | [view here](https://github.com/drexed/lite-validators/blob/m
22
22
  ```ruby
23
23
  class User < ActiveRecord::Base
24
24
 
25
- validates :input_0, credit_card: true
26
- validates :input_1, credit_card: { provider: :visa }
25
+ validates :input0, credit_card: true
26
+ validates :input1, credit_card: { provider: :visa }
27
27
 
28
28
  end
29
29
  ```
@@ -36,9 +36,9 @@ not_equal_to | numeric | |
36
36
  ```ruby
37
37
  class User < ActiveRecord::Base
38
38
 
39
- validates :input_0, csv: { columns: { less_than: 100 } }
40
- validates :input_1, csv: { rows: { in: (50..100) } }
41
- validates :input_2, csv: { columns: { equal_to: 5 }, rows: { greater_than: 5 } }
39
+ validates :input0, csv: { columns: { less_than: 100 } }
40
+ validates :input1, csv: { rows: { in: (50..100) } }
41
+ validates :input2, csv: { columns: { equal_to: 5 }, rows: { greater_than: 5 } }
42
42
 
43
43
  end
44
44
  ```
@@ -12,7 +12,7 @@
12
12
  ```ruby
13
13
  class User < ActiveRecord::Base
14
14
 
15
- validates :input_0, currency: true
15
+ validates :input0, currency: true
16
16
 
17
17
  end
18
18
  ```
@@ -14,7 +14,7 @@
14
14
  ```ruby
15
15
  class User < ActiveRecord::Base
16
16
 
17
- validates :input_0, cusip: true
17
+ validates :input0, cusip: true
18
18
 
19
19
  end
20
20
  ```
@@ -18,9 +18,9 @@ domain | array, string, symbol | |
18
18
  ```ruby
19
19
  class User < ActiveRecord::Base
20
20
 
21
- validates :input_0, email: true
22
- validates :input_1, email: { domain: 'com' }
23
- validates :input_2, email: { domain: %w[com org] }
21
+ validates :input0, email: true
22
+ validates :input1, email: { domain: 'com' }
23
+ validates :input2, email: { domain: %w[com org] }
24
24
 
25
25
  end
26
26
  ```
@@ -18,9 +18,9 @@ exclude | array, regexp, string, symbol | |
18
18
  ```ruby
19
19
  class User < ActiveRecord::Base
20
20
 
21
- validates :input_0, file_content_type: { include: 'text/csv' }
22
- validates :input_1, file_content_type: { exclude: %w[image/png text/plain] }
23
- validates :input_2, file_content_type: { include: /^text\/.*/, exclude: 'text/csv' }
21
+ validates :input0, file_content_type: { include: 'text/csv' }
22
+ validates :input1, file_content_type: { exclude: %w[image/png text/plain] }
23
+ validates :input2, file_content_type: { include: /^text\/.*/, exclude: 'text/csv' }
24
24
 
25
25
  end
26
26
  ```
@@ -18,8 +18,8 @@ exclude | array, string, symbol | |
18
18
  ```ruby
19
19
  class User < ActiveRecord::Base
20
20
 
21
- validates :input_0, file_extension: { include: 'csv' }
22
- validates :input_1, file_extension: { exclude: [:png, 'text'] }
21
+ validates :input0, file_extension: { include: 'csv' }
22
+ validates :input1, file_extension: { exclude: [:png, 'text'] }
23
23
 
24
24
  end
25
25
  ```
@@ -30,9 +30,9 @@ not_equal_to | numeric | |
30
30
  ```ruby
31
31
  class User < ActiveRecord::Base
32
32
 
33
- validates :input_0, file_size: { less_than: 100 }
34
- validates :input_1, file_size: { greater_than_or_equal_to: 75, less_than: 100 }
35
- validates :input_0, file_size: { in: (50..100) }
33
+ validates :input0, file_size: { less_than: 100 }
34
+ validates :input1, file_size: { greater_than_or_equal_to: 75, less_than: 100 }
35
+ validates :input0, file_size: { in: (50..100) }
36
36
 
37
37
  end
38
38
  ```
@@ -12,7 +12,7 @@
12
12
  ```ruby
13
13
  class User < ActiveRecord::Base
14
14
 
15
- validates :input_0, hex: true
15
+ validates :input0, hex: true
16
16
 
17
17
  end
18
18
  ```
@@ -14,7 +14,7 @@
14
14
  ```ruby
15
15
  class User < ActiveRecord::Base
16
16
 
17
- validates :input_0, imei: true
17
+ validates :input0, imei: true
18
18
 
19
19
  end
20
20
  ```
@@ -19,8 +19,8 @@ protocol | symbol | any, ipv4, ipv6 | any
19
19
  ```ruby
20
20
  class User < ActiveRecord::Base
21
21
 
22
- validates :input_0, ip_address: true
23
- validates :input_1, ip_address: { protocol: :ipv4 }
22
+ validates :input0, ip_address: true
23
+ validates :input1, ip_address: { protocol: :ipv4 }
24
24
 
25
25
  end
26
26
  ```
@@ -12,7 +12,7 @@
12
12
  ```ruby
13
13
  class User < ActiveRecord::Base
14
14
 
15
- validates :input_0, isbn: true
15
+ validates :input0, isbn: true
16
16
 
17
17
  end
18
18
  ```
@@ -14,7 +14,7 @@
14
14
  ```ruby
15
15
  class User < ActiveRecord::Base
16
16
 
17
- validates :input_0, isin: true
17
+ validates :input0, isin: true
18
18
 
19
19
  end
20
20
  ```
@@ -15,7 +15,7 @@
15
15
  ```ruby
16
16
  class User < ActiveRecord::Base
17
17
 
18
- validates :input_0, mac_address: true
18
+ validates :input0, mac_address: true
19
19
 
20
20
  end
21
21
  ```
@@ -12,7 +12,7 @@
12
12
  ```ruby
13
13
  class User < ActiveRecord::Base
14
14
 
15
- validates :input_0, name: true
15
+ validates :input0, name: true
16
16
 
17
17
  end
18
18
  ```
@@ -19,8 +19,8 @@ strength | symbol | strong, weak | weak
19
19
  ```ruby
20
20
  class User < ActiveRecord::Base
21
21
 
22
- validates :input_0, password: true
23
- validates :input_1, password: { strength: :strong }
22
+ validates :input0, password: true
23
+ validates :input1, password: { strength: :strong }
24
24
 
25
25
  end
26
26
  ```
@@ -12,7 +12,7 @@
12
12
  ```ruby
13
13
  class User < ActiveRecord::Base
14
14
 
15
- validates :input_0, phone_number: true
15
+ validates :input0, phone_number: true
16
16
 
17
17
  end
18
18
  ```
@@ -14,7 +14,7 @@
14
14
  ```ruby
15
15
  class User < ActiveRecord::Base
16
16
 
17
- validates :input_0, sedol: true
17
+ validates :input0, sedol: true
18
18
 
19
19
  end
20
20
  ```
@@ -12,7 +12,7 @@
12
12
  ```ruby
13
13
  class User < ActiveRecord::Base
14
14
 
15
- validates :input_0, slug: true
15
+ validates :input0, slug: true
16
16
 
17
17
  end
18
18
  ```
@@ -12,7 +12,7 @@
12
12
  ```ruby
13
13
  class User < ActiveRecord::Base
14
14
 
15
- validates :input_0, ssn: true
15
+ validates :input0, ssn: true
16
16
 
17
17
  end
18
18
  ```
@@ -11,7 +11,7 @@
11
11
  ```ruby
12
12
  class User < ActiveRecord::Base
13
13
 
14
- validates :input_0, time_zone: true
14
+ validates :input0, time_zone: true
15
15
 
16
16
  end
17
17
  ```
@@ -18,11 +18,11 @@ is_not | class | |
18
18
  ```ruby
19
19
  class User < ActiveRecord::Base
20
20
 
21
- validates :input_0, type: { is: Array }
22
- validates :input_1, type: { is: Boolean } #=> Checks both TrueClass and FalseClass
23
- validates :input_2, type: { is: [Array, Hash] }
24
- validates :input_3, type: { is_not: CustomKlass } #=> Any Class based objects
25
- validates :input_4, type: { is_not: Integer }
21
+ validates :input0, type: { is: Array }
22
+ validates :input1, type: { is: Boolean } #=> Checks both TrueClass and FalseClass
23
+ validates :input2, type: { is: [Array, Hash] }
24
+ validates :input3, type: { is_not: CustomKlass } #=> Any Class based objects
25
+ validates :input4, type: { is_not: Integer }
26
26
 
27
27
  end
28
28
  ```
@@ -19,10 +19,10 @@ scheme | array, string, symbol | |
19
19
  ```ruby
20
20
  class User < ActiveRecord::Base
21
21
 
22
- validates :input_0, url: true
23
- validates :input_1, url: { domain: [:com, 'org'] }
24
- validates :input_2, url: { scheme: :https }
25
- validates :input_3, url: { root_only: true }
22
+ validates :input0, url: true
23
+ validates :input1, url: { domain: [:com, 'org'] }
24
+ validates :input2, url: { scheme: :https }
25
+ validates :input3, url: { root_only: true }
26
26
 
27
27
  end
28
28
  ```
@@ -4,7 +4,7 @@
4
4
 
5
5
  ```ruby
6
6
  # 1. Pattern
7
- /^[a-z0-9_-]{1,255}$/
7
+ /^[A-Za-z0-9._-]{1,255}$/
8
8
  ```
9
9
 
10
10
  #### Usage
@@ -12,7 +12,7 @@
12
12
  ```ruby
13
13
  class User < ActiveRecord::Base
14
14
 
15
- validates :input_0, username: true
15
+ validates :input0, username: true
16
16
 
17
17
  end
18
18
  ```
@@ -21,8 +21,8 @@ version | symbol, integer | any, 3, 4, 5 | any
21
21
  ```ruby
22
22
  class User < ActiveRecord::Base
23
23
 
24
- validates :input_0, uuid: true
25
- validates :input_1, uuid: { version: 3 }
24
+ validates :input0, uuid: true
25
+ validates :input1, uuid: { version: 3 }
26
26
 
27
27
  end
28
28
  ```
@@ -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,17 +19,17 @@ 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
 
26
- [*option].each do |option_value|
26
+ Array(option).each do |option_value|
27
27
  next if collection.include?(option_value)
28
28
 
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 y n yes no on off
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
@@ -88,7 +88,7 @@ class CreditCardValidator < BaseValidator
88
88
 
89
89
  def checksum(value)
90
90
  values = digits(value).reverse.map.with_index { |n, i| i.even? ? n * 2 : n }
91
- total = values.reverse.inject(0) { |a, b| a + digits(b).inject(:+) }
91
+ total = values.reverse.inject(0) { |a, b| a + digits(b).sum }
92
92
  checksum = 10 - (total % 10)
93
93
  checksum == 10 ? 0 : checksum
94
94
  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
 
@@ -24,7 +24,7 @@ class FileContentTypeValidator < BaseValidator
24
24
 
25
25
  # rubocop:disable Style/CaseEquality
26
26
  def valid_content_type?(option, option_value)
27
- check = [*option_value].any? { |type| type === value.content_type }
27
+ check = Array(option_value).any? { |type| type === value.content_type }
28
28
  option == :exclude ? !check : check
29
29
  end
30
30
  # rubocop:enable Style/CaseEquality
@@ -22,10 +22,9 @@ class FileExtensionValidator < BaseValidator
22
22
 
23
23
  def include_or_exclude
24
24
  values = options[:include] || options[:exclude]
25
- [*values]
25
+ Array(values)
26
26
  end
27
27
 
28
- # rubocop:disable Metrics/AbcSize
29
28
  def valid_attr?
30
29
  extension = File.extname(value.original_filename).tr('.', '')
31
30
  return false if extension.empty?
@@ -36,6 +35,5 @@ class FileExtensionValidator < BaseValidator
36
35
 
37
36
  record.errors.add(attribute, *error_message)
38
37
  end
39
- # rubocop:enable Metrics/AbcSize
40
38
 
41
39
  end
@@ -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, Metrics/PerceivedComplexity
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 }
@@ -27,10 +27,10 @@ class IsinValidator < BaseValidator
27
27
 
28
28
  longest = longest.map { |int| int * 2 }
29
29
  values = longest.concat(shortest).to_s.scan(/./).map(&:to_i)
30
- total = values.inject(&:+)
30
+ total = values.sum
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, Metrics/PerceivedComplexity
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
@@ -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
@@ -34,7 +34,7 @@ class TypeValidator < BaseValidator
34
34
  if is_or_is_not == Boolean
35
35
  value.is_a?(TrueClass) || value.is_a?(FalseClass)
36
36
  else
37
- [*is_or_is_not].any? { |klass| value.is_a?(klass) }
37
+ Array(is_or_is_not).any? { |klass| value.is_a?(klass) }
38
38
  end
39
39
  end
40
40
 
@@ -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,17 +26,20 @@ 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
 
32
- # rubocop:disable Metrics/AbcSize
34
+ # rubocop:disable Layout/LineLength, Metrics/AbcSize
33
35
  def valid_domain?
34
36
  return true unless options[:domain]
35
37
 
36
38
  value_downcased = value.host.to_s.downcase
37
- check = [*options[:domain]].any? { |domain| value_downcased.end_with?(".#{domain.downcase}") }
39
+ check = Array(options[:domain]).any? { |domain| value_downcased.end_with?(".#{domain.downcase}") }
38
40
  record.errors.add(attribute, error_message_for(:domain)) unless check
39
41
  end
42
+ # rubocop:enable Layout/LineLength, Metrics/AbcSize
40
43
 
41
44
  def valid_root?
42
45
  return true unless options[:root_only]
@@ -49,10 +52,9 @@ class UrlValidator < BaseValidator
49
52
  return true unless options[:scheme]
50
53
 
51
54
  value_downcased = value.scheme.to_s.downcase
52
- check = [*scheme].any? { |sch| value_downcased == sch.to_s.downcase }
55
+ check = Array(scheme).any? { |sch| value_downcased == sch.to_s.downcase }
53
56
  record.errors.add(attribute, error_message_for(:scheme)) unless check
54
57
  end
55
- # rubocop:enable Metrics/AbcSize
56
58
 
57
59
  def valid_uri?
58
60
  value.is_a?(URI::Generic)
@@ -2,6 +2,6 @@
2
2
 
3
3
  class UsernameValidator < BaseValidator
4
4
 
5
- REGEXP ||= /^[a-z0-9_-]{1,255}$/.freeze
5
+ REGEXP ||= /^[A-Za-z0-9._-]{1,255}$/.freeze
6
6
 
7
7
  end
@@ -3,7 +3,7 @@
3
3
  module Lite
4
4
  module Validators
5
5
 
6
- VERSION ||= '1.0.4'
6
+ VERSION ||= '1.1.1'
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.4
4
+ version: 1.1.1
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-08-09 00:00:00.000000000 Z
11
+ date: 2020-11-07 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: []