lite-validators 1.4.0 → 1.7.0
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 +4 -4
- data/CHANGELOG.md +15 -0
- data/Gemfile.lock +26 -26
- data/README.md +2 -0
- data/docs/IP_ADDRESS.md +4 -0
- data/docs/LIST.md +28 -0
- data/docs/REFERENCE.md +25 -0
- data/docs/URL.md +2 -0
- data/lib/lite/validators/compare_validator.rb +2 -2
- data/lib/lite/validators/file_size_validator.rb +2 -2
- data/lib/lite/validators/ip_address_validator.rb +20 -1
- data/lib/lite/validators/list_validator.rb +35 -0
- data/lib/lite/validators/reference_validator.rb +28 -0
- data/lib/lite/validators/url_validator.rb +13 -5
- data/lib/lite/validators/version.rb +1 -1
- data/lib/lite/validators.rb +2 -0
- data/lib/locales/en.yml +2 -0
- metadata +6 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c30c0e86b00cc4525b0878c22cf5d5dfae82ffa4b3301726197d51c46efaba7e
|
|
4
|
+
data.tar.gz: 926913306e4b90b172db620412c5018090888b0bc8f76f3c3097f583c941f705
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c53420f1612dd642452e7b9e1720e89cab49de4dd75d61e4c040eecc8474066908449be8d9740f39386ae52f3652428e4a6ab19c2be01b97789ba86282b242d4
|
|
7
|
+
data.tar.gz: 6ccb77637a747d155539cd2b7fc06a868fb4e816ccf501099b891968f132bb0f6aa0d8d967aaefcf1fe33e35303464724ad0b9973cea2bd96273f50c0805d66b
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [1.7.0] - 2022-03-17
|
|
10
|
+
### Added
|
|
11
|
+
- Added Reference validator
|
|
12
|
+
|
|
13
|
+
## [1.6.0] - 2022-02-17
|
|
14
|
+
### Added
|
|
15
|
+
- Added List validator
|
|
16
|
+
### Changed
|
|
17
|
+
- Update to use public_send instead of send
|
|
18
|
+
|
|
19
|
+
## [1.5.0] - 2022-02-17
|
|
20
|
+
### Changed
|
|
21
|
+
- Added `include_address` to ip_address validator
|
|
22
|
+
- Added `exclude_address` to ip_address validator
|
|
23
|
+
|
|
9
24
|
## [1.4.0] - 2022-02-11
|
|
10
25
|
### Changed
|
|
11
26
|
- Added `include_host` to url validator
|
data/Gemfile.lock
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
lite-validators (1.
|
|
4
|
+
lite-validators (1.7.0)
|
|
5
5
|
activemodel
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
actionpack (7.0.2.
|
|
11
|
-
actionview (= 7.0.2.
|
|
12
|
-
activesupport (= 7.0.2.
|
|
10
|
+
actionpack (7.0.2.3)
|
|
11
|
+
actionview (= 7.0.2.3)
|
|
12
|
+
activesupport (= 7.0.2.3)
|
|
13
13
|
rack (~> 2.0, >= 2.2.0)
|
|
14
14
|
rack-test (>= 0.6.3)
|
|
15
15
|
rails-dom-testing (~> 2.0)
|
|
16
16
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
|
17
|
-
actionview (7.0.2.
|
|
18
|
-
activesupport (= 7.0.2.
|
|
17
|
+
actionview (7.0.2.3)
|
|
18
|
+
activesupport (= 7.0.2.3)
|
|
19
19
|
builder (~> 3.1)
|
|
20
20
|
erubi (~> 1.4)
|
|
21
21
|
rails-dom-testing (~> 2.0)
|
|
22
22
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
|
23
|
-
activemodel (7.0.2.
|
|
24
|
-
activesupport (= 7.0.2.
|
|
25
|
-
activesupport (7.0.2.
|
|
23
|
+
activemodel (7.0.2.3)
|
|
24
|
+
activesupport (= 7.0.2.3)
|
|
25
|
+
activesupport (7.0.2.3)
|
|
26
26
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
27
27
|
i18n (>= 1.6, < 2)
|
|
28
28
|
minitest (>= 5.1)
|
|
@@ -37,19 +37,19 @@ GEM
|
|
|
37
37
|
fasterer (0.9.0)
|
|
38
38
|
colorize (~> 0.7)
|
|
39
39
|
ruby_parser (>= 3.14.1)
|
|
40
|
-
i18n (1.
|
|
40
|
+
i18n (1.10.0)
|
|
41
41
|
concurrent-ruby (~> 1.0)
|
|
42
|
-
loofah (2.
|
|
42
|
+
loofah (2.15.0)
|
|
43
43
|
crass (~> 1.0.2)
|
|
44
44
|
nokogiri (>= 1.5.9)
|
|
45
45
|
method_source (1.0.0)
|
|
46
|
-
mini_portile2 (2.
|
|
46
|
+
mini_portile2 (2.8.0)
|
|
47
47
|
minitest (5.15.0)
|
|
48
|
-
nokogiri (1.13.
|
|
49
|
-
mini_portile2 (~> 2.
|
|
48
|
+
nokogiri (1.13.3)
|
|
49
|
+
mini_portile2 (~> 2.8.0)
|
|
50
50
|
racc (~> 1.4)
|
|
51
51
|
parallel (1.21.0)
|
|
52
|
-
parser (3.1.
|
|
52
|
+
parser (3.1.1.0)
|
|
53
53
|
ast (~> 2.4.1)
|
|
54
54
|
racc (1.6.0)
|
|
55
55
|
rack (2.2.3)
|
|
@@ -60,16 +60,16 @@ GEM
|
|
|
60
60
|
nokogiri (>= 1.6)
|
|
61
61
|
rails-html-sanitizer (1.4.2)
|
|
62
62
|
loofah (~> 2.3)
|
|
63
|
-
railties (7.0.2.
|
|
64
|
-
actionpack (= 7.0.2.
|
|
65
|
-
activesupport (= 7.0.2.
|
|
63
|
+
railties (7.0.2.3)
|
|
64
|
+
actionpack (= 7.0.2.3)
|
|
65
|
+
activesupport (= 7.0.2.3)
|
|
66
66
|
method_source
|
|
67
67
|
rake (>= 12.2)
|
|
68
68
|
thor (~> 1.0)
|
|
69
69
|
zeitwerk (~> 2.5)
|
|
70
70
|
rainbow (3.1.1)
|
|
71
71
|
rake (13.0.6)
|
|
72
|
-
regexp_parser (2.2.
|
|
72
|
+
regexp_parser (2.2.1)
|
|
73
73
|
rexml (3.2.5)
|
|
74
74
|
rspec (3.11.0)
|
|
75
75
|
rspec-core (~> 3.11.0)
|
|
@@ -83,7 +83,7 @@ GEM
|
|
|
83
83
|
rspec-mocks (3.11.0)
|
|
84
84
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
85
85
|
rspec-support (~> 3.11.0)
|
|
86
|
-
rspec-rails (5.1.
|
|
86
|
+
rspec-rails (5.1.1)
|
|
87
87
|
actionpack (>= 5.2)
|
|
88
88
|
activesupport (>= 5.2)
|
|
89
89
|
railties (>= 5.2)
|
|
@@ -92,23 +92,23 @@ GEM
|
|
|
92
92
|
rspec-mocks (~> 3.10)
|
|
93
93
|
rspec-support (~> 3.10)
|
|
94
94
|
rspec-support (3.11.0)
|
|
95
|
-
rubocop (1.
|
|
95
|
+
rubocop (1.26.0)
|
|
96
96
|
parallel (~> 1.10)
|
|
97
97
|
parser (>= 3.1.0.0)
|
|
98
98
|
rainbow (>= 2.2.2, < 4.0)
|
|
99
99
|
regexp_parser (>= 1.8, < 3.0)
|
|
100
100
|
rexml
|
|
101
|
-
rubocop-ast (>= 1.
|
|
101
|
+
rubocop-ast (>= 1.16.0, < 2.0)
|
|
102
102
|
ruby-progressbar (~> 1.7)
|
|
103
103
|
unicode-display_width (>= 1.4.0, < 3.0)
|
|
104
|
-
rubocop-ast (1.
|
|
105
|
-
parser (>= 3.
|
|
106
|
-
rubocop-performance (1.13.
|
|
104
|
+
rubocop-ast (1.16.0)
|
|
105
|
+
parser (>= 3.1.1.0)
|
|
106
|
+
rubocop-performance (1.13.3)
|
|
107
107
|
rubocop (>= 1.7.0, < 2.0)
|
|
108
108
|
rubocop-ast (>= 0.4.0)
|
|
109
109
|
rubocop-rake (0.6.0)
|
|
110
110
|
rubocop (~> 1.0)
|
|
111
|
-
rubocop-rspec (2.
|
|
111
|
+
rubocop-rspec (2.9.0)
|
|
112
112
|
rubocop (~> 1.19)
|
|
113
113
|
ruby-progressbar (1.11.0)
|
|
114
114
|
ruby_parser (3.18.1)
|
data/README.md
CHANGED
|
@@ -51,10 +51,12 @@ Or install it yourself as:
|
|
|
51
51
|
* [IP address](https://github.com/drexed/lite-validators/blob/master/docs/IP_ADDRESS.md)
|
|
52
52
|
* [ISBN](https://github.com/drexed/lite-validators/blob/master/docs/ISBN.md)
|
|
53
53
|
* [ISIN](https://github.com/drexed/lite-validators/blob/master/docs/ISIN.md)
|
|
54
|
+
* [List](https://github.com/drexed/lite-validators/blob/master/docs/LIST.md)
|
|
54
55
|
* [MAC address](https://github.com/drexed/lite-validators/blob/master/docs/MAC.md)
|
|
55
56
|
* [Name](https://github.com/drexed/lite-validators/blob/master/docs/NAME.md)
|
|
56
57
|
* [Password](https://github.com/drexed/lite-validators/blob/master/docs/PASSWORD.md)
|
|
57
58
|
* [Phone number](https://github.com/drexed/lite-validators/blob/master/docs/PHONE_NUMBER.md)
|
|
59
|
+
* [Reference](https://github.com/drexed/lite-validators/blob/master/docs/REFERENCE.md)
|
|
58
60
|
* [SEDOL](https://github.com/drexed/lite-validators/blob/master/docs/SEDOL.md)
|
|
59
61
|
* [Slug](https://github.com/drexed/lite-validators/blob/master/docs/SLUG.md)
|
|
60
62
|
* [SSN](https://github.com/drexed/lite-validators/blob/master/docs/SSN.md)
|
data/docs/IP_ADDRESS.md
CHANGED
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
Option | Type | Available | Default
|
|
14
14
|
--- | --- | --- | ---
|
|
15
15
|
protocol | symbol | any, ipv4, ipv6 | any
|
|
16
|
+
include_address | array, string, symbol | |
|
|
17
|
+
exclude_address | array, string, symbol | |
|
|
16
18
|
|
|
17
19
|
#### Usage
|
|
18
20
|
|
|
@@ -21,6 +23,8 @@ class User < ActiveRecord::Base
|
|
|
21
23
|
|
|
22
24
|
validates :input0, ip_address: true
|
|
23
25
|
validates :input1, ip_address: { protocol: :ipv4 }
|
|
26
|
+
validates :input2, ip_address: { include_address: ['0.0.0.0', '99.39.240.31'] }
|
|
27
|
+
validates :input3, ip_address: { exclude_address: ['0.0.0.0', '99.39.240.31'] }
|
|
24
28
|
|
|
25
29
|
end
|
|
26
30
|
```
|
data/docs/LIST.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# List
|
|
2
|
+
|
|
3
|
+
#### Rules
|
|
4
|
+
|
|
5
|
+
```ruby
|
|
6
|
+
# 1. Check
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
#### Options
|
|
10
|
+
|
|
11
|
+
Option | Type | Available | Default
|
|
12
|
+
--- | --- | --- | ---
|
|
13
|
+
all | array | |
|
|
14
|
+
any | array | |
|
|
15
|
+
none | array | |
|
|
16
|
+
|
|
17
|
+
#### Usage
|
|
18
|
+
|
|
19
|
+
```ruby
|
|
20
|
+
class User < ActiveRecord::Base
|
|
21
|
+
|
|
22
|
+
validates :input0, list: { all: %w[monday tuesday] }
|
|
23
|
+
validates :input1, list: { any: %w[saturday sunday] }
|
|
24
|
+
validates :input2, list: { none: %w[wednesday thursday] }
|
|
25
|
+
validates :input3, list: { any: %w[saturday sunday], none: %w[wednesday thursday] }
|
|
26
|
+
|
|
27
|
+
end
|
|
28
|
+
```
|
data/docs/REFERENCE.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Reference
|
|
2
|
+
|
|
3
|
+
#### Rules
|
|
4
|
+
|
|
5
|
+
```ruby
|
|
6
|
+
# 1. Pattern
|
|
7
|
+
/\A[+-]?\d+\z/
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
#### Options
|
|
11
|
+
|
|
12
|
+
Option | Type | Available | Default
|
|
13
|
+
--- | --- | --- | ---
|
|
14
|
+
association | symbol | object method | attribute without `_id`
|
|
15
|
+
|
|
16
|
+
#### Usage
|
|
17
|
+
|
|
18
|
+
```ruby
|
|
19
|
+
class User < ActiveRecord::Base
|
|
20
|
+
|
|
21
|
+
validates :input_id, reference: true
|
|
22
|
+
validates :output_id, reference: { association: :input }
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
```
|
data/docs/URL.md
CHANGED
|
@@ -13,6 +13,8 @@ Option | Type | Available | Default
|
|
|
13
13
|
domain | array, string, symbol | |
|
|
14
14
|
root_only | boolean | true, false | false
|
|
15
15
|
scheme | array, string, symbol | |
|
|
16
|
+
include_host | array, string, symbol | |
|
|
17
|
+
exclude_host | array, string, symbol | |
|
|
16
18
|
|
|
17
19
|
#### Usage
|
|
18
20
|
|
|
@@ -59,9 +59,9 @@ class FileSizeValidator < BaseValidator
|
|
|
59
59
|
return false if size.nil?
|
|
60
60
|
|
|
61
61
|
if option_value.is_a?(Range)
|
|
62
|
-
option_value.
|
|
62
|
+
option_value.public_send(CHECKS[option], size)
|
|
63
63
|
else
|
|
64
|
-
size.
|
|
64
|
+
size.public_send(CHECKS[option], option_value)
|
|
65
65
|
end
|
|
66
66
|
end
|
|
67
67
|
|
|
@@ -20,11 +20,30 @@ class IpAddressValidator < BaseValidator
|
|
|
20
20
|
assert_valid_option!(:protocol, REGEXP.keys.push(:any))
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
def error_message_for(option)
|
|
24
|
+
options[:message] || I18n.t("errors.messages.ip_address.#{option}")
|
|
25
|
+
end
|
|
26
|
+
|
|
23
27
|
def protocol
|
|
24
28
|
options[:protocol] || :any
|
|
25
29
|
end
|
|
26
30
|
|
|
27
|
-
def
|
|
31
|
+
def valid?
|
|
32
|
+
valid_format? && valid_address?
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def valid_address?
|
|
36
|
+
addresses = options[:include_address] || options[:exclude_address]
|
|
37
|
+
return true unless addresses
|
|
38
|
+
|
|
39
|
+
check = options[:include_address] ? :any? : :none?
|
|
40
|
+
check = Array(addresses).public_send(check) { |address| value.include?(address.to_s) }
|
|
41
|
+
return true if check
|
|
42
|
+
|
|
43
|
+
record.errors.add(attribute, error_message_for(:address))
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def valid_format?
|
|
28
47
|
case protocol
|
|
29
48
|
when :ipv4 then valid_regexp?(:ipv4)
|
|
30
49
|
when :ipv6 then valid_regexp?(:ipv6)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class ListValidator < BaseValidator
|
|
4
|
+
|
|
5
|
+
def validate_each(record, attribute, value)
|
|
6
|
+
assert_valid_all_or_any_or_none!
|
|
7
|
+
assign_attr_readers(record, attribute, value)
|
|
8
|
+
valid?
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
def assert_valid_all_or_any_or_none!
|
|
14
|
+
return if options.key?(:all) || options.key?(:any) || options.key?(:none)
|
|
15
|
+
|
|
16
|
+
raise ArgumentError, 'Missing ":all", ":any" or ":none" attribute for comparison.'
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def valid_attr?
|
|
20
|
+
options.slice(:all, :any, :none).each do |option, option_value|
|
|
21
|
+
validate_check(option, option_value)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def valid_content_type?(option, option_value)
|
|
26
|
+
Array(value).public_send("#{option}?") { |val| option_value.include?(val) }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def validate_check(option, option_value)
|
|
30
|
+
return if valid_content_type?(option, option_value)
|
|
31
|
+
|
|
32
|
+
record.errors.add(attribute, *error_message)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class ReferenceValidator < BaseValidator
|
|
4
|
+
|
|
5
|
+
REGEXP = /\A[+-]?\d+\z/
|
|
6
|
+
|
|
7
|
+
private
|
|
8
|
+
|
|
9
|
+
def valid?
|
|
10
|
+
valid_id? || valid_object?
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def valid_id?
|
|
14
|
+
if value.blank?
|
|
15
|
+
false
|
|
16
|
+
elsif !valid_regexp?
|
|
17
|
+
record.errors.add(attribute, *error_message)
|
|
18
|
+
else
|
|
19
|
+
!value.to_i.negative?
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def valid_object?
|
|
24
|
+
association_object = options[:association] || attribute.to_s.chomp('_id')
|
|
25
|
+
record.send(association_object).present?
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
@@ -33,7 +33,9 @@ class UrlValidator < BaseValidator
|
|
|
33
33
|
|
|
34
34
|
value_downcased = value.host.to_s.downcase
|
|
35
35
|
check = Array(options[:domain]).any? { |domain| value_downcased.end_with?(".#{domain.downcase}") }
|
|
36
|
-
|
|
36
|
+
return true if check
|
|
37
|
+
|
|
38
|
+
record.errors.add(attribute, error_message_for(:domain))
|
|
37
39
|
end
|
|
38
40
|
|
|
39
41
|
def valid_host?
|
|
@@ -42,15 +44,19 @@ class UrlValidator < BaseValidator
|
|
|
42
44
|
|
|
43
45
|
value_downcased = value.host.to_s.downcase
|
|
44
46
|
check = options[:include_host] ? :any? : :none?
|
|
45
|
-
check = Array(hosts).
|
|
46
|
-
|
|
47
|
+
check = Array(hosts).public_send(check) { |host| value_downcased.include?(host.to_s.downcase) }
|
|
48
|
+
return true if check
|
|
49
|
+
|
|
50
|
+
record.errors.add(attribute, error_message_for(:host))
|
|
47
51
|
end
|
|
48
52
|
|
|
49
53
|
def valid_root?
|
|
50
54
|
return true unless options[:root_only]
|
|
51
55
|
|
|
52
56
|
check = ['', '/'].include?(value.path) && value.query.blank? && value.fragment.blank?
|
|
53
|
-
|
|
57
|
+
return true if check
|
|
58
|
+
|
|
59
|
+
record.errors.add(attribute, error_message_for(:root))
|
|
54
60
|
end
|
|
55
61
|
|
|
56
62
|
def valid_scheme?
|
|
@@ -59,7 +65,9 @@ class UrlValidator < BaseValidator
|
|
|
59
65
|
value_downcased = value.scheme.to_s.downcase
|
|
60
66
|
schemes = options[:scheme] || SCHEMES
|
|
61
67
|
check = Array(schemes).any? { |scheme| value_downcased == scheme.to_s.downcase }
|
|
62
|
-
|
|
68
|
+
return true if check
|
|
69
|
+
|
|
70
|
+
record.errors.add(attribute, error_message_for(:scheme))
|
|
63
71
|
end
|
|
64
72
|
|
|
65
73
|
def valid_uri?
|
data/lib/lite/validators.rb
CHANGED
|
@@ -25,10 +25,12 @@ require 'lite/validators/imei_validator'
|
|
|
25
25
|
require 'lite/validators/ip_address_validator'
|
|
26
26
|
require 'lite/validators/isbn_validator'
|
|
27
27
|
require 'lite/validators/isin_validator'
|
|
28
|
+
require 'lite/validators/list_validator'
|
|
28
29
|
require 'lite/validators/mac_address_validator'
|
|
29
30
|
require 'lite/validators/name_validator'
|
|
30
31
|
require 'lite/validators/password_validator'
|
|
31
32
|
require 'lite/validators/phone_number_validator'
|
|
33
|
+
require 'lite/validators/reference_validator'
|
|
32
34
|
require 'lite/validators/sedol_validator'
|
|
33
35
|
require 'lite/validators/slug_validator'
|
|
34
36
|
require 'lite/validators/ssn_validator'
|
data/lib/locales/en.yml
CHANGED
|
@@ -21,6 +21,8 @@ en:
|
|
|
21
21
|
less_than_or_equal_to: "file size is not less than or equal to %{count}"
|
|
22
22
|
equal_to: "file size is not equal to %{count} but should"
|
|
23
23
|
not_equal_to: "file size is equal to %{count} but shouldn't"
|
|
24
|
+
ip_address:
|
|
25
|
+
address: "has an invalid address"
|
|
24
26
|
url:
|
|
25
27
|
domain: "has an invalid domain"
|
|
26
28
|
host: "has an invalid host"
|
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.
|
|
4
|
+
version: 1.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Juan Gomez
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-03-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activemodel
|
|
@@ -205,10 +205,12 @@ files:
|
|
|
205
205
|
- docs/IP_ADDRESS.md
|
|
206
206
|
- docs/ISBN.md
|
|
207
207
|
- docs/ISIN.md
|
|
208
|
+
- docs/LIST.md
|
|
208
209
|
- docs/MAC_ADDRESS.md
|
|
209
210
|
- docs/NAME.md
|
|
210
211
|
- docs/PASSWORD.md
|
|
211
212
|
- docs/PHONE_NUMBER.md
|
|
213
|
+
- docs/REFERENCE.md
|
|
212
214
|
- docs/SEDOL.md
|
|
213
215
|
- docs/SLUG.md
|
|
214
216
|
- docs/SSN.md
|
|
@@ -239,11 +241,13 @@ files:
|
|
|
239
241
|
- lib/lite/validators/ip_address_validator.rb
|
|
240
242
|
- lib/lite/validators/isbn_validator.rb
|
|
241
243
|
- lib/lite/validators/isin_validator.rb
|
|
244
|
+
- lib/lite/validators/list_validator.rb
|
|
242
245
|
- lib/lite/validators/mac_address_validator.rb
|
|
243
246
|
- lib/lite/validators/name_validator.rb
|
|
244
247
|
- lib/lite/validators/password_validator.rb
|
|
245
248
|
- lib/lite/validators/phone_number_validator.rb
|
|
246
249
|
- lib/lite/validators/railtie.rb
|
|
250
|
+
- lib/lite/validators/reference_validator.rb
|
|
247
251
|
- lib/lite/validators/sedol_validator.rb
|
|
248
252
|
- lib/lite/validators/slug_validator.rb
|
|
249
253
|
- lib/lite/validators/ssn_validator.rb
|