defra_ruby_validators 2.5.2 → 2.6.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 54f780cf89fcc1888cd3b9af95707c6e3ac2a0d0dcd1e304ab6d9b2933b69ef9
4
- data.tar.gz: 895551a30493fb79367289728c28e7e09873c1c6def93e685c70f7076b67f46c
3
+ metadata.gz: 2e9394d56a860bc591e8858943843bae425845124bdca40f68f90fa864e3bbc6
4
+ data.tar.gz: 259e137a79906fb23ca984322d0e7d87dfa117cd87f4b5f87df182a69fec8cd5
5
5
  SHA512:
6
- metadata.gz: '07863b0bde9327c8384a93b8e1c681b02ef7fedce040a36d4f17aa9435a4783e4db51fcf41a29469ea3b6d9599324b89f8ab5c3c830040b563894db33449d8e9'
7
- data.tar.gz: 4e07b525aae83437d5ad450e4e3989f402caf04346efc130543440a41084e2a4ecc48168894f88e261fc66c269aa48389282dedd17b2031ce0a889924b99720c
6
+ metadata.gz: 5336207fa6acbb53f0c36cb3759ea3d31e507de9392e2c0081bed9160bad765de799a88b6a8b4295daa80ec534f00ab158ae606e6592d624bbd8cfa48d34c69a
7
+ data.tar.gz: c81e615d1b0337ff9e21380f80a91d50670ec5b95c950a35e346feda88822e34f0e9660f81b7e75d200b6b0fc83cff2d05af79e383b78123c7edab9fb46563e8
@@ -0,0 +1,6 @@
1
+ en:
2
+ defra_ruby:
3
+ validators:
4
+ PostcodeValidator:
5
+ blank: "Enter a postcode"
6
+ invalid_format: "Enter a valid postcode - there’s a mistake in that one"
@@ -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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module DefraRuby
4
4
  module Validators
5
- VERSION = "2.5.2"
5
+ VERSION = "2.6.0"
6
6
  end
7
7
  end
@@ -20,6 +20,7 @@ require_relative "validators/location_validator"
20
20
  require_relative "validators/phone_number_validator"
21
21
  require_relative "validators/mobile_phone_number_validator"
22
22
  require_relative "validators/position_validator"
23
+ require_relative "validators/postcode_validator"
23
24
  require_relative "validators/token_validator"
24
25
  require_relative "validators/true_false_validator"
25
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.5.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-06-26 00:00:00.000000000 Z
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
@@ -129,6 +143,7 @@ files:
129
143
  - config/locales/defra_ruby/validators/past_date_validator/en.yml
130
144
  - config/locales/defra_ruby/validators/phone_number_validator/en.yml
131
145
  - config/locales/defra_ruby/validators/position_validator/en.yml
146
+ - config/locales/defra_ruby/validators/postcode_validator/en.yml
132
147
  - config/locales/defra_ruby/validators/token_validator/en.yml
133
148
  - config/locales/defra_ruby/validators/true_false_validator/en.yml
134
149
  - lib/defra_ruby/validators.rb
@@ -149,6 +164,7 @@ files:
149
164
  - lib/defra_ruby/validators/past_date_validator.rb
150
165
  - lib/defra_ruby/validators/phone_number_validator.rb
151
166
  - lib/defra_ruby/validators/position_validator.rb
167
+ - lib/defra_ruby/validators/postcode_validator.rb
152
168
  - lib/defra_ruby/validators/token_validator.rb
153
169
  - lib/defra_ruby/validators/true_false_validator.rb
154
170
  - lib/defra_ruby/validators/version.rb