defra_ruby_validators 2.5.1 → 2.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -0
- data/config/locales/defra_ruby/validators/mobile_phone_number_validator/en.yml +7 -0
- data/config/locales/defra_ruby/validators/postcode_validator/en.yml +6 -0
- data/lib/defra_ruby/validators/companies_house_number_validator.rb +1 -2
- data/lib/defra_ruby/validators/mobile_phone_number_validator.rb +32 -0
- data/lib/defra_ruby/validators/postcode_validator.rb +31 -0
- data/lib/defra_ruby/validators/version.rb +1 -1
- data/lib/defra_ruby/validators.rb +2 -0
- metadata +20 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e9394d56a860bc591e8858943843bae425845124bdca40f68f90fa864e3bbc6
|
4
|
+
data.tar.gz: 259e137a79906fb23ca984322d0e7d87dfa117cd87f4b5f87df182a69fec8cd5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5336207fa6acbb53f0c36cb3759ea3d31e507de9392e2c0081bed9160bad765de799a88b6a8b4295daa80ec534f00ab158ae606e6592d624bbd8cfa48d34c69a
|
7
|
+
data.tar.gz: c81e615d1b0337ff9e21380f80a91d50670ec5b95c950a35e346feda88822e34f0e9660f81b7e75d200b6b0fc83cff2d05af79e383b78123c7edab9fb46563e8
|
data/README.md
CHANGED
@@ -144,6 +144,16 @@ Add it to your model or form object using
|
|
144
144
|
validates :phone_number, "defra_ruby/validators/phone_number": true
|
145
145
|
```
|
146
146
|
|
147
|
+
### Mobile phone number
|
148
|
+
|
149
|
+
This validator checks the value is present, is not too long (15 is th maximum length for any phone number), is a mobile phone number, and is in the correct format as per [E.164](https://en.wikipedia.org/wiki/E.164) (we use [phonelib](https://github.com/daddyz/phonelib) to check the format).
|
150
|
+
|
151
|
+
Add it to your model or form object using
|
152
|
+
|
153
|
+
```ruby
|
154
|
+
validates :mobile_phone_number, "defra_ruby/validators/mobile_phone_number": true
|
155
|
+
```
|
156
|
+
|
147
157
|
### Position
|
148
158
|
|
149
159
|
This validator checks the value provided for 'position' i.e. someones role or title within an organisation. This is an optional field so the validator has to handle the value being blank. If it's not then it can be no longer than 70 characters and only include letters, spaces, commas, full stops, hyphens and apostrophes else it will return an error.
|
@@ -9,9 +9,8 @@ module DefraRuby
|
|
9
9
|
# SC534714, CE000958
|
10
10
|
# IP00141R, IP27702R, SP02252R
|
11
11
|
# https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/426891/uniformResourceIdentifiersCustomerGuide.pdf
|
12
|
-
VALID_COMPANIES_HOUSE_REGISTRATION_NUMBER_REGEX =
|
12
|
+
VALID_COMPANIES_HOUSE_REGISTRATION_NUMBER_REGEX =
|
13
13
|
/\A(\d{8,8}$)|([a-zA-Z]{2}\d{6}$)|([a-zA-Z]{2}\d{5}[a-zA-Z]{1}$)\z/i
|
14
|
-
).freeze
|
15
14
|
|
16
15
|
def validate_each(record, attribute, value)
|
17
16
|
return false unless value_is_present?(record, attribute, value)
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "phonelib"
|
4
|
+
|
5
|
+
module DefraRuby
|
6
|
+
module Validators
|
7
|
+
class MobilePhoneNumberValidator < BaseValidator
|
8
|
+
include CanValidatePresence
|
9
|
+
include CanValidateLength
|
10
|
+
|
11
|
+
MAX_LENGTH = 15
|
12
|
+
|
13
|
+
def validate_each(record, attribute, value)
|
14
|
+
return false unless value_is_present?(record, attribute, value)
|
15
|
+
return false unless value_is_not_too_long?(record, attribute, value, MAX_LENGTH)
|
16
|
+
|
17
|
+
valid_format?(record, attribute, value)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def valid_format?(record, attribute, value)
|
23
|
+
Phonelib.default_country = "GB"
|
24
|
+
return true if Phonelib.valid?(value) && Phonelib.parse(value).type == :mobile
|
25
|
+
|
26
|
+
add_validation_error(record, attribute, :invalid_format)
|
27
|
+
false
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "uk_postcode"
|
4
|
+
|
5
|
+
module DefraRuby
|
6
|
+
module Validators
|
7
|
+
class PostcodeValidator < BaseValidator
|
8
|
+
include CanValidatePresence
|
9
|
+
|
10
|
+
def validate_each(record, attribute, value)
|
11
|
+
return false unless value_is_present?(record, attribute, value)
|
12
|
+
|
13
|
+
valid_format?(record, attribute, value)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def valid_format?(record, attribute, value)
|
19
|
+
parsed_value = UKPostcode.parse(value)
|
20
|
+
return true if (normalise(parsed_value) == normalise(value)) && parsed_value.full_valid?
|
21
|
+
|
22
|
+
add_validation_error(record, attribute, :invalid_format)
|
23
|
+
false
|
24
|
+
end
|
25
|
+
|
26
|
+
def normalise(postcode)
|
27
|
+
postcode.to_s.downcase.gsub(/\s+/, "")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -18,7 +18,9 @@ require_relative "validators/email_validator"
|
|
18
18
|
require_relative "validators/grid_reference_validator"
|
19
19
|
require_relative "validators/location_validator"
|
20
20
|
require_relative "validators/phone_number_validator"
|
21
|
+
require_relative "validators/mobile_phone_number_validator"
|
21
22
|
require_relative "validators/position_validator"
|
23
|
+
require_relative "validators/postcode_validator"
|
22
24
|
require_relative "validators/token_validator"
|
23
25
|
require_relative "validators/true_false_validator"
|
24
26
|
require_relative "validators/past_date_validator"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: defra_ruby_validators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Defra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '2.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: uk_postcode
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: validates_email_format_of
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -125,9 +139,11 @@ files:
|
|
125
139
|
- config/locales/defra_ruby/validators/email_validator/en.yml
|
126
140
|
- config/locales/defra_ruby/validators/grid_reference_validator/en.yml
|
127
141
|
- config/locales/defra_ruby/validators/location_validator/en.yml
|
142
|
+
- config/locales/defra_ruby/validators/mobile_phone_number_validator/en.yml
|
128
143
|
- config/locales/defra_ruby/validators/past_date_validator/en.yml
|
129
144
|
- config/locales/defra_ruby/validators/phone_number_validator/en.yml
|
130
145
|
- config/locales/defra_ruby/validators/position_validator/en.yml
|
146
|
+
- config/locales/defra_ruby/validators/postcode_validator/en.yml
|
131
147
|
- config/locales/defra_ruby/validators/token_validator/en.yml
|
132
148
|
- config/locales/defra_ruby/validators/true_false_validator/en.yml
|
133
149
|
- lib/defra_ruby/validators.rb
|
@@ -144,9 +160,11 @@ files:
|
|
144
160
|
- lib/defra_ruby/validators/engine.rb
|
145
161
|
- lib/defra_ruby/validators/grid_reference_validator.rb
|
146
162
|
- lib/defra_ruby/validators/location_validator.rb
|
163
|
+
- lib/defra_ruby/validators/mobile_phone_number_validator.rb
|
147
164
|
- lib/defra_ruby/validators/past_date_validator.rb
|
148
165
|
- lib/defra_ruby/validators/phone_number_validator.rb
|
149
166
|
- lib/defra_ruby/validators/position_validator.rb
|
167
|
+
- lib/defra_ruby/validators/postcode_validator.rb
|
150
168
|
- lib/defra_ruby/validators/token_validator.rb
|
151
169
|
- lib/defra_ruby/validators/true_false_validator.rb
|
152
170
|
- lib/defra_ruby/validators/version.rb
|