license_plate_validator 1.2.0 → 2.0.1
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 +5 -5
- data/.github/workflows/release.yml +29 -0
- data/.github/workflows/test.yml +47 -0
- data/CHANGELOG +18 -7
- data/README.md +4 -3
- data/RELEASING.md +8 -0
- data/gemfiles/Gemfile.rails7.0 +8 -0
- data/gemfiles/Gemfile.rails7.1 +5 -0
- data/gemfiles/Gemfile.rails7.2 +5 -0
- data/gemfiles/Gemfile.rails8.0 +5 -0
- data/gemfiles/{standalone → Gemfile.ruby} +1 -1
- data/lib/license_plate_validator/version.rb +1 -1
- data/lib/license_plate_validator.rb +6 -2
- data/license_plate_validator.gemspec +5 -5
- data/spec/license_plate_validator/active_model_spec.rb +23 -21
- data/spec/license_plate_validator_spec.rb +12 -6
- metadata +22 -24
- data/.travis.yml +0 -20
- data/gem-private_key.pem +0 -27
- data/gem-public_cert.pem +0 -21
- data/gemfiles/activemodel-3-2 +0 -5
- data/gemfiles/activemodel-4 +0 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: debcc3278367e4f15a34e18e2ebe01569722f3c86afa6d3dfa8b5417dd00294b
|
|
4
|
+
data.tar.gz: 46f9c8452ff3c94bdde69188452c868ebbe8ee988a2c716271e81a6f0b606a18
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dd129c0724b45e7db796c78dcbb9f18e7c53026511e6f3d5fd18179280f9caddee3b36eb6db34d047c754e554140e76acecf7d0fdc01190a16b6b8ec7449c86d
|
|
7
|
+
data.tar.gz: f29cf03fdb09371a7c9f329d7a870dbe9a4803212ef9d0abc299f8c2a942177923ddf98307e01712bce1732898096edb0eadad0ee9c4e93fb2ee90d0892ffaac
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: Release to Rubygems
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- v*
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
push:
|
|
13
|
+
if: github.repository == 'ariejan/license_plate_validator'
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
contents: write
|
|
18
|
+
id-token: write
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v4
|
|
22
|
+
- name: Set up Ruby
|
|
23
|
+
uses: ruby/setup-ruby@v1
|
|
24
|
+
with:
|
|
25
|
+
bundler-cache: true
|
|
26
|
+
ruby-version: ruby
|
|
27
|
+
|
|
28
|
+
# Release
|
|
29
|
+
- uses: rubygems/release-gem@v1
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
name: Ruby CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ master ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ master ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
strategy:
|
|
14
|
+
matrix:
|
|
15
|
+
ruby-version:
|
|
16
|
+
- 3.1
|
|
17
|
+
- 3.2
|
|
18
|
+
- 3.3
|
|
19
|
+
- 3.4
|
|
20
|
+
gemfile:
|
|
21
|
+
- gemfiles/Gemfile.ruby
|
|
22
|
+
- gemfiles/Gemfile.rails7.0
|
|
23
|
+
- gemfiles/Gemfile.rails7.1
|
|
24
|
+
- gemfiles/Gemfile.rails7.2
|
|
25
|
+
- gemfiles/Gemfile.rails8.0
|
|
26
|
+
exclude:
|
|
27
|
+
- ruby-version: 3.1
|
|
28
|
+
gemfile: gemfiles/Gemfile.rails8.0
|
|
29
|
+
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@v4
|
|
32
|
+
|
|
33
|
+
- name: Set up Ruby
|
|
34
|
+
uses: ruby/setup-ruby@v1
|
|
35
|
+
with:
|
|
36
|
+
ruby-version: ${{ matrix.ruby-version }}
|
|
37
|
+
|
|
38
|
+
- name: Install dependencies
|
|
39
|
+
run: |
|
|
40
|
+
gem install bundler
|
|
41
|
+
bundle install --gemfile=${{ matrix.gemfile }}
|
|
42
|
+
|
|
43
|
+
- name: Run tests
|
|
44
|
+
run: |
|
|
45
|
+
bundle exec rspec
|
|
46
|
+
env:
|
|
47
|
+
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
|
data/CHANGELOG
CHANGED
|
@@ -1,12 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
# CHANGELOG
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
* German language support
|
|
3
|
+
## 2.0.1 - 2025-01-01
|
|
5
4
|
|
|
6
|
-
|
|
5
|
+
- Add support for German E-license plates - @Lisztos
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
## 2.0.0 - 2024-09-24
|
|
9
8
|
|
|
10
|
-
1.
|
|
9
|
+
- Update dependencies; this may break older Ruby (< 3.1) and Rails (< 7.x) integrations.
|
|
10
|
+
- Add new NL license plate formats - @edwardmp
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## 1.2.0 - 2014-07-28
|
|
13
|
+
|
|
14
|
+
- German license plate support
|
|
15
|
+
- German language support
|
|
16
|
+
|
|
17
|
+
## 1.1.1 - 2014-04-25
|
|
18
|
+
|
|
19
|
+
- Fix i18n key
|
|
20
|
+
|
|
21
|
+
## 1.0 - 2013-04-23
|
|
22
|
+
|
|
23
|
+
- Initial release with Dutch license plate support
|
data/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
# License Plate Validator
|
|
2
2
|
|
|
3
3
|
[](http://badge.fury.io/rb/license_plate_validator)
|
|
4
|
-
[](https://github.com/ariejan/license_plate_validator/actions)
|
|
5
5
|
|
|
6
6
|
This gem allows you to easily valdiate license plate fields to be valid
|
|
7
7
|
license plates.
|
|
8
8
|
|
|
9
9
|
We're planning on supporting multiple countries, but at this time we can
|
|
10
|
-
only validate Dutch license plates.
|
|
10
|
+
only validate Dutch and German license plates.
|
|
11
11
|
|
|
12
12
|
## Features
|
|
13
13
|
|
|
@@ -40,7 +40,7 @@ Or install it yourself as:
|
|
|
40
40
|
LicensePlateValidator.new("SBA 5226", country: :nl).valid?
|
|
41
41
|
#=> false
|
|
42
42
|
|
|
43
|
-
###
|
|
43
|
+
### Ruby on Rails support
|
|
44
44
|
|
|
45
45
|
You can use LicensePlateValidator with any ActiveModel class, including
|
|
46
46
|
ActiveRecord models:
|
|
@@ -102,6 +102,7 @@ specs.
|
|
|
102
102
|
## Contributor
|
|
103
103
|
|
|
104
104
|
* Pascal Widdershoven - for the original regexes for Dutch license plate numbers.
|
|
105
|
+
* Edward Poot - for adding new RDW approved license plate schemes
|
|
105
106
|
* Marcus Ilgner, evopark - for german license plates
|
|
106
107
|
|
|
107
108
|
## License
|
data/RELEASING.md
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
## Releasing
|
|
2
|
+
|
|
3
|
+
1. Update version file in `lib/license_plate_validator/version.rb` and run `bundle install`.
|
|
4
|
+
1. Update `CHANGELOG` to reflect the changes in this release.
|
|
5
|
+
1. Commit changes to `master`.
|
|
6
|
+
1. Tag the release: `git tag -s vVERSION`
|
|
7
|
+
1. Push changes: `git push && git push --tags`
|
|
8
|
+
1. That's is. Github Actions will release the gem to Rubygems.org
|
|
@@ -12,7 +12,11 @@ class LicensePlateValidator
|
|
|
12
12
|
/^([0-9]{2})-?([a-zA-Z]{3})-?([0-9]{1})$/,
|
|
13
13
|
/^([0-9]{1})-?([a-zA-Z]{3})-?([0-9]{2})$/,
|
|
14
14
|
/^([a-zA-Z]{2})-?([0-9]{3})-?([a-zA-Z]{1})$/,
|
|
15
|
-
/^([a-zA-Z]{1})-?([0-9]{3})-?([a-zA-Z]{2})
|
|
15
|
+
/^([a-zA-Z]{1})-?([0-9]{3})-?([a-zA-Z]{2})$/,
|
|
16
|
+
/^([a-zA-Z]{3})-?([0-9]{2})-?([a-zA-Z])$/,
|
|
17
|
+
/^([0-9]{3})-?([a-zA-Z]{2})-?([0-9])$/,
|
|
18
|
+
/^([a-zA-Z])-?([0-9]{2})-?([a-zA-Z]{3})$/,
|
|
19
|
+
/^([0-9])-?([a-zA-Z]{2})-?([0-9]{3})$/
|
|
16
20
|
],
|
|
17
21
|
# Germany
|
|
18
22
|
de: [
|
|
@@ -23,7 +27,7 @@ class LicensePlateValidator
|
|
|
23
27
|
# 2. a 2-3-digit-number (country identifier) followed by 1-3 digits
|
|
24
28
|
# diplomatic license plates can be followed by a single letter
|
|
25
29
|
# regular license plates can be followed by an 'H' for oldtimers
|
|
26
|
-
/^(A|AA|AB|ABG|ABI|AC|AE|AD|AF|AIC|AK|ALF|AM|AN|ANA|ANK|AÖ|AP|APD|ARN|ART|AS|ASL|ASZ|AT|AU|AUR|AW|AZ|AZE|B|BA|BAD|BAR|BB|BBG|BC|BCH|BD|BED|BER|BF|BGL|BI|BID|BIN|BIR|BIT|BIW|BK|BKS|BL|BLB|BLK|BM|BN|BNA|BO|BÖ|BOR|BOT|BRA|BRB|BRG|BRL|BRV|BS|BT|BTF|BÜD|BÜS|BÜZ|BW|BWL|BYL|BZ|C|CA|CAS|CB|CE|CHA|CLP|CLZ|CO|COC|COE|CUX|CW|D|DA|DAH|DAN|DAU|DB|DBR|DD|DE|DEG|DEL|DGF|DH|DI|DIN|DL|DLG|DM|DN|DO|DON|DU|DÜW|DW|DZ|E|EA|EB|EBE|ECK|ED|EE|EF|EH|EI|EIC|EIL|EIN|EIS|EL|EM|EMD|EMS|EN|ER|ERB|ERH|ERZ|ES|ESW|EU|EW|F|FB|FD|FDS|FF|FFB|FG|FI|FL|FLO|FN|FO|FOR|FR|FRG|FRI|FRW|FS|FT|FTL|FÜ|G|GA|GAP|GC|GD|GDB|GE|GER|GEO|GF|GG|GHA|GHC|GI|GL|GLA|GM|GMN|GN|GNT|GÖ|GOA|GP|GR|GRH|GRZ|GS|GT|GTH|GUB|GÜ|GVM|GW|GZ|H|HA|HAL|HAM|HAS|HB|HBN|HBS|HC|HCH|HD|HDH|HDL|HE|HEF|HEI|HER|HET|HF|HG|HGN|HGW|HH|HHM|HI|HIG|HK|HK|HL|HM|HMÜ|HN|HO|HOG|HOL|HOM|HOT|HP|HR|HRO|HS|HSK|HST|HU|HVL|HWI|HX|HY|HZ|IGB|IK|IL|IN|IZ|J|JE|JL|JÜL|K|KA|KB|KC|KE|KEH|KF|KG|KH|KI|KIB|KL|KLE|KLZ|KM|KN|KO|KÖT|KR|KS|KT|KU|KÜN|KUS|KY|KYF|L|LA|LAU|LB|LBS|LBZ|LD|LDK|LDS|LEO|LER|LEV|LG|LI|LIF|LIP|LL|LM|LÖ|LÖB|LOS|LP|LRO|LSA|LSZ|LU|LUN|LWL|M|MA|MAB|MB|MC|MD|ME|MEI|MEK|MG|MGN|MH|MHL|MI|MIL|MKK|ML|MK|MM|MN|MO|MOL|MOS|MQ|MR|MS|MSH|MSP|MST|MTK|MTL|MÜ|MÜR|MW|MW|MYK|MZ|MZG|N|NB|ND|NDH|NE|NEA|NEB|NES|NEW|NF|NH|NI|NK|NM|NMB|NMS|NOH|NOL|NOM|NOR|NP|NR|NU|NVP|NW|NWM|NY|NZ|OA|OAL|OB|OBG|OC|OCH|OD|OE|OF|OG|OH|OHA|OHV|OHZ|OK|OL|OPR|OS|OSL|OVL|OVP|P|PA|PAF|PAN|PB|PCH|PE|PF|PI|PIR|PL|PLÖ|PM|PN|PR|PRÜ|PS|PW|QFT|QLB|R|RA|RC|RD|RDG|RE|REG|RG|RH|RI|RIE|RL|RM|RO|ROW|RP|RS|RSL|RT|RÜD|RÜG|RV|RW|RZ|S|SAB|SAD|SAW|SB|SBK|SC|SCZ|SDH|SDL|SE|SEB|SEE|SFA|SFB|SFT|SG|SGH|SHA|SHG|SHK|SHL|SI|SIG|SIM|SK|SL|SLF|SLK|SLN|SLS|SLÜ|SLZ|SM|SN|SO|SÖM|SOK|SON|SP|SPN|SR|SRB|SRO|ST|STA|STD|STL|SU|SÜW|SW|SZ|SZB|TBB|TDO|TE|TET|TF|TG|TIR|TO|TÖL|TR|TS|TÜ|TUT|UE|UEM|UER|UH|UL|UM|UN|USI|V|VB|VEC|VER|VG|VIE|VK|VR|VS|W|WAF|WAK|WAN|WAT|WB|WBS|WDA|WE|WEN|WES|WF|WHV|WI|WIL|WIS|WIT|WK|WL|WLG|WM|WMS|WN|WND|WO|WOB|WOH|WR|WSF|WST|WT|WTM|WÜ|WUG|WUN|WUR|WW|WZL|X|Y|Z|ZE|ZEL|ZI|ZP|ZR|ZW|ZZ)[\- ]((?:[a-z]{1,2}[\- ]
|
|
30
|
+
/^(A|AA|AB|ABG|ABI|AC|AE|AD|AF|AIC|AK|ALF|AM|AN|ANA|ANK|AÖ|AP|APD|ARN|ART|AS|ASL|ASZ|AT|AU|AUR|AW|AZ|AZE|B|BA|BAD|BAR|BB|BBG|BC|BCH|BD|BED|BER|BF|BGL|BI|BID|BIN|BIR|BIT|BIW|BK|BKS|BL|BLB|BLK|BM|BN|BNA|BO|BÖ|BOR|BOT|BRA|BRB|BRG|BRL|BRV|BS|BT|BTF|BÜD|BÜS|BÜZ|BW|BWL|BYL|BZ|C|CA|CAS|CB|CE|CHA|CLP|CLZ|CO|COC|COE|CUX|CW|D|DA|DAH|DAN|DAU|DB|DBR|DD|DE|DEG|DEL|DGF|DH|DI|DIN|DL|DLG|DM|DN|DO|DON|DU|DÜW|DW|DZ|E|EA|EB|EBE|ECK|ED|EE|EF|EH|EI|EIC|EIL|EIN|EIS|EL|EM|EMD|EMS|EN|ER|ERB|ERH|ERZ|ES|ESW|EU|EW|F|FB|FD|FDS|FF|FFB|FG|FI|FL|FLO|FN|FO|FOR|FR|FRG|FRI|FRW|FS|FT|FTL|FÜ|G|GA|GAP|GC|GD|GDB|GE|GER|GEO|GF|GG|GHA|GHC|GI|GL|GLA|GM|GMN|GN|GNT|GÖ|GOA|GP|GR|GRH|GRZ|GS|GT|GTH|GUB|GÜ|GVM|GW|GZ|H|HA|HAL|HAM|HAS|HB|HBN|HBS|HC|HCH|HD|HDH|HDL|HE|HEF|HEI|HER|HET|HF|HG|HGN|HGW|HH|HHM|HI|HIG|HK|HK|HL|HM|HMÜ|HN|HO|HOG|HOL|HOM|HOT|HP|HR|HRO|HS|HSK|HST|HU|HVL|HWI|HX|HY|HZ|IGB|IK|IL|IN|IZ|J|JE|JL|JÜL|K|KA|KB|KC|KE|KEH|KF|KG|KH|KI|KIB|KL|KLE|KLZ|KM|KN|KO|KÖT|KR|KS|KT|KU|KÜN|KUS|KY|KYF|L|LA|LAU|LB|LBS|LBZ|LD|LDK|LDS|LEO|LER|LEV|LG|LI|LIF|LIP|LL|LM|LÖ|LÖB|LOS|LP|LRO|LSA|LSZ|LU|LUN|LWL|M|MA|MAB|MB|MC|MD|ME|MEI|MEK|MG|MGN|MH|MHL|MI|MIL|MKK|ML|MK|MM|MN|MO|MOL|MOS|MQ|MR|MS|MSH|MSP|MST|MTK|MTL|MÜ|MÜR|MW|MW|MYK|MZ|MZG|N|NB|ND|NDH|NE|NEA|NEB|NES|NEW|NF|NH|NI|NK|NM|NMB|NMS|NOH|NOL|NOM|NOR|NP|NR|NU|NVP|NW|NWM|NY|NZ|OA|OAL|OB|OBG|OC|OCH|OD|OE|OF|OG|OH|OHA|OHV|OHZ|OK|OL|OPR|OS|OSL|OVL|OVP|P|PA|PAF|PAN|PB|PCH|PE|PF|PI|PIR|PL|PLÖ|PM|PN|PR|PRÜ|PS|PW|QFT|QLB|R|RA|RC|RD|RDG|RE|REG|RG|RH|RI|RIE|RL|RM|RO|ROW|RP|RS|RSL|RT|RÜD|RÜG|RV|RW|RZ|S|SAB|SAD|SAW|SB|SBK|SC|SCZ|SDH|SDL|SE|SEB|SEE|SFA|SFB|SFT|SG|SGH|SHA|SHG|SHK|SHL|SI|SIG|SIM|SK|SL|SLF|SLK|SLN|SLS|SLÜ|SLZ|SM|SN|SO|SÖM|SOK|SON|SP|SPN|SR|SRB|SRO|ST|STA|STD|STL|SU|SÜW|SW|SZ|SZB|TBB|TDO|TE|TET|TF|TG|TIR|TO|TÖL|TR|TS|TÜ|TUT|UE|UEM|UER|UH|UL|UM|UN|USI|V|VB|VEC|VER|VG|VIE|VK|VR|VS|W|WAF|WAK|WAN|WAT|WB|WBS|WDA|WE|WEN|WES|WF|WHV|WI|WIL|WIS|WIT|WK|WL|WLG|WM|WMS|WN|WND|WO|WOB|WOH|WR|WSF|WST|WT|WTM|WÜ|WUG|WUN|WUR|WW|WZL|X|Y|Z|ZE|ZEL|ZI|ZP|ZR|ZW|ZZ)[\- ]((?:[a-z]{1,2}[\- ]*\d{1,4}[HE]?)|(9\d{3})|(\d{2,3}\-\d{1,3})[a-z]?)$/i,
|
|
27
31
|
# more diplomatic license plates ;)
|
|
28
32
|
/^0[\- ]\d{1,3}[\- ]\d{1,3}\w?$/i
|
|
29
33
|
]
|
|
@@ -12,14 +12,14 @@ Gem::Specification.new do |spec|
|
|
|
12
12
|
spec.summary = %q{Validate license plate numbers for countries that support it.}
|
|
13
13
|
spec.homepage = "https://ariejan.github.io/license_plate_validator"
|
|
14
14
|
spec.license = "MIT"
|
|
15
|
-
|
|
15
|
+
spec.required_ruby_version = ">= 3.1"
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
19
|
spec.require_paths = ["lib"]
|
|
20
20
|
|
|
21
|
-
spec.add_development_dependency "bundler", "~>
|
|
22
|
-
spec.add_development_dependency "rspec", "~>
|
|
23
|
-
spec.add_development_dependency "rake"
|
|
24
|
-
spec.add_development_dependency 'activemodel', '~>
|
|
21
|
+
spec.add_development_dependency "bundler", "~> 2.5"
|
|
22
|
+
spec.add_development_dependency "rspec", "~> 3.13.0"
|
|
23
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
|
24
|
+
spec.add_development_dependency 'activemodel', '~> 7'
|
|
25
25
|
end
|
|
@@ -14,33 +14,35 @@ if defined?(ActiveModel)
|
|
|
14
14
|
validates :number, license_plate: true
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
describe
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
RSpec.describe "Ruby on Rails ActiveModel support" do
|
|
18
|
+
context DutchVehicle do
|
|
19
|
+
it "accepts Dutch plates only" do
|
|
20
|
+
obj = DutchVehicle.new(number: "60-NFH-1")
|
|
21
|
+
expect(obj).to be_valid
|
|
22
|
+
|
|
23
|
+
obj = DutchVehicle.new(number: "SBA5226")
|
|
24
|
+
expect(obj).not_to be_valid
|
|
25
|
+
end
|
|
24
26
|
end
|
|
25
|
-
end
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
context DutchMethodVehicle do
|
|
29
|
+
it "accepts Dutch plates only" do
|
|
30
|
+
obj = DutchMethodVehicle.new(number: "60-NFH-1", country: "nl")
|
|
31
|
+
expect(obj).to be_valid
|
|
31
32
|
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
obj = DutchMethodVehicle.new(number: "SBA5226", country: "nl")
|
|
34
|
+
expect(obj).not_to be_valid
|
|
35
|
+
end
|
|
34
36
|
end
|
|
35
|
-
end
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
context UnknownVehicle do
|
|
39
|
+
it "accepts both Dutch and German plates" do
|
|
40
|
+
obj = UnknownVehicle.new(number: "60-NFH-1")
|
|
41
|
+
expect(obj).to be_valid
|
|
41
42
|
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
obj = UnknownVehicle.new(number: "SBA5226")
|
|
44
|
+
expect(obj).to be_valid
|
|
45
|
+
end
|
|
44
46
|
end
|
|
45
47
|
end
|
|
46
48
|
end
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
|
|
3
|
-
describe LicensePlateValidator do
|
|
3
|
+
RSpec.describe LicensePlateValidator do
|
|
4
4
|
it 'should have a version number' do
|
|
5
|
-
LicensePlateValidator::VERSION.
|
|
5
|
+
expect(LicensePlateValidator::VERSION).not_to be_nil
|
|
6
6
|
end
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
context "#new" do
|
|
9
9
|
it 'demands one argument, optionally a second' do
|
|
10
|
-
expect { LicensePlateValidator.new() }.to raise_error
|
|
10
|
+
expect { LicensePlateValidator.new() }.to raise_error(ArgumentError)
|
|
11
11
|
expect { LicensePlateValidator.new ("a") }.not_to raise_error
|
|
12
12
|
expect { LicensePlateValidator.new("a", country: :nl) }.not_to raise_error
|
|
13
13
|
expect { LicensePlateValidator.new("a", country: nil) }.not_to raise_error
|
|
@@ -30,7 +30,7 @@ describe LicensePlateValidator do
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
it "returns array of patterns for known countries" do
|
|
33
|
-
expect(subject.patterns_for_country(:nl).size).to eql(
|
|
33
|
+
expect(subject.patterns_for_country(:nl).size).to eql(14)
|
|
34
34
|
end
|
|
35
35
|
end
|
|
36
36
|
|
|
@@ -79,7 +79,11 @@ describe LicensePlateValidator do
|
|
|
79
79
|
"61-NFH-1",
|
|
80
80
|
"1-KGB-42",
|
|
81
81
|
"FZ-142-X",
|
|
82
|
-
"X-721-FZ"
|
|
82
|
+
"X-721-FZ",
|
|
83
|
+
"GBB-01-B",
|
|
84
|
+
"V-01-BBB",
|
|
85
|
+
"9-XX-999",
|
|
86
|
+
"999-XX-9"
|
|
83
87
|
]
|
|
84
88
|
|
|
85
89
|
NL_INVALID_SAMPLES = [
|
|
@@ -108,6 +112,8 @@ describe LicensePlateValidator do
|
|
|
108
112
|
DE_VALID_SAMPLES = [
|
|
109
113
|
"K-AB-123",
|
|
110
114
|
"GL-A-123H",
|
|
115
|
+
"B-AD-4563E",
|
|
116
|
+
"AC A123",
|
|
111
117
|
"K-9123",
|
|
112
118
|
"0-12-123",
|
|
113
119
|
"0-12-234H"
|
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: license_plate_validator
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ariejan de Vroom
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: bin
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 2025-02-18 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: bundler
|
|
@@ -16,56 +15,56 @@ dependencies:
|
|
|
16
15
|
requirements:
|
|
17
16
|
- - "~>"
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
18
|
+
version: '2.5'
|
|
20
19
|
type: :development
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
23
|
- - "~>"
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
25
|
+
version: '2.5'
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
28
27
|
name: rspec
|
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
|
30
29
|
requirements:
|
|
31
30
|
- - "~>"
|
|
32
31
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
32
|
+
version: 3.13.0
|
|
34
33
|
type: :development
|
|
35
34
|
prerelease: false
|
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
36
|
requirements:
|
|
38
37
|
- - "~>"
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
39
|
+
version: 3.13.0
|
|
41
40
|
- !ruby/object:Gem::Dependency
|
|
42
41
|
name: rake
|
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
|
44
43
|
requirements:
|
|
45
|
-
- - "
|
|
44
|
+
- - "~>"
|
|
46
45
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
46
|
+
version: '13.0'
|
|
48
47
|
type: :development
|
|
49
48
|
prerelease: false
|
|
50
49
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
50
|
requirements:
|
|
52
|
-
- - "
|
|
51
|
+
- - "~>"
|
|
53
52
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
53
|
+
version: '13.0'
|
|
55
54
|
- !ruby/object:Gem::Dependency
|
|
56
55
|
name: activemodel
|
|
57
56
|
requirement: !ruby/object:Gem::Requirement
|
|
58
57
|
requirements:
|
|
59
58
|
- - "~>"
|
|
60
59
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
60
|
+
version: '7'
|
|
62
61
|
type: :development
|
|
63
62
|
prerelease: false
|
|
64
63
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
64
|
requirements:
|
|
66
65
|
- - "~>"
|
|
67
66
|
- !ruby/object:Gem::Version
|
|
68
|
-
version:
|
|
67
|
+
version: '7'
|
|
69
68
|
description: Formatting and content of license plate codes can be validated in some
|
|
70
69
|
countries. This gem add Rails validators for this to your project.
|
|
71
70
|
email:
|
|
@@ -74,19 +73,21 @@ executables: []
|
|
|
74
73
|
extensions: []
|
|
75
74
|
extra_rdoc_files: []
|
|
76
75
|
files:
|
|
76
|
+
- ".github/workflows/release.yml"
|
|
77
|
+
- ".github/workflows/test.yml"
|
|
77
78
|
- ".gitignore"
|
|
78
79
|
- ".rspec"
|
|
79
|
-
- ".travis.yml"
|
|
80
80
|
- CHANGELOG
|
|
81
81
|
- Gemfile
|
|
82
82
|
- LICENSE.txt
|
|
83
83
|
- README.md
|
|
84
|
+
- RELEASING.md
|
|
84
85
|
- Rakefile
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
- gemfiles/
|
|
88
|
-
- gemfiles/
|
|
89
|
-
- gemfiles/
|
|
86
|
+
- gemfiles/Gemfile.rails7.0
|
|
87
|
+
- gemfiles/Gemfile.rails7.1
|
|
88
|
+
- gemfiles/Gemfile.rails7.2
|
|
89
|
+
- gemfiles/Gemfile.rails8.0
|
|
90
|
+
- gemfiles/Gemfile.ruby
|
|
90
91
|
- lib/license_plate_validator.rb
|
|
91
92
|
- lib/license_plate_validator/active_model.rb
|
|
92
93
|
- lib/license_plate_validator/locales/de.yml
|
|
@@ -101,7 +102,6 @@ homepage: https://ariejan.github.io/license_plate_validator
|
|
|
101
102
|
licenses:
|
|
102
103
|
- MIT
|
|
103
104
|
metadata: {}
|
|
104
|
-
post_install_message:
|
|
105
105
|
rdoc_options: []
|
|
106
106
|
require_paths:
|
|
107
107
|
- lib
|
|
@@ -109,16 +109,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
109
109
|
requirements:
|
|
110
110
|
- - ">="
|
|
111
111
|
- !ruby/object:Gem::Version
|
|
112
|
-
version: '
|
|
112
|
+
version: '3.1'
|
|
113
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
115
|
- - ">="
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
117
|
version: '0'
|
|
118
118
|
requirements: []
|
|
119
|
-
|
|
120
|
-
rubygems_version: 2.2.2
|
|
121
|
-
signing_key:
|
|
119
|
+
rubygems_version: 3.6.2
|
|
122
120
|
specification_version: 4
|
|
123
121
|
summary: Validate license plate numbers for countries that support it.
|
|
124
122
|
test_files:
|
data/.travis.yml
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
language: ruby
|
|
2
|
-
|
|
3
|
-
notifications:
|
|
4
|
-
email: false
|
|
5
|
-
|
|
6
|
-
rvm:
|
|
7
|
-
- 2.0.0
|
|
8
|
-
- 2.1.1
|
|
9
|
-
- jruby-19mode
|
|
10
|
-
- ruby-head
|
|
11
|
-
|
|
12
|
-
matrix:
|
|
13
|
-
allow_failures:
|
|
14
|
-
- rvm: jruby-19mode
|
|
15
|
-
- rvm: ruby-head
|
|
16
|
-
|
|
17
|
-
gemfile:
|
|
18
|
-
- gemfiles/activemodel-4
|
|
19
|
-
- gemfiles/activemodel-3-2
|
|
20
|
-
- gemfiles/standalone
|
data/gem-private_key.pem
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
-----BEGIN RSA PRIVATE KEY-----
|
|
2
|
-
MIIEpAIBAAKCAQEAyt2l9tkc4bL1zgKZk9UiNbqNElgCuRzV1pfk32Sb+S57RH9w
|
|
3
|
-
CE8mkYituGW0mLAjxg9h/lcn424Q62D+vlSJsHyjsgisWtu3ZHg1uy6VE8xWlCaD
|
|
4
|
-
tvOas51M8LNyQtS+f5pTy0WB4BOcKk5M9TwJDK4zX/CJBErxttBhYx1QJhiERHgg
|
|
5
|
-
1wGFXQpUQAW5HW4FlXWgXtfvfljj9eE1bw5Qz3ycj8NE83kQOSS9NaKwX/ma60jb
|
|
6
|
-
JJakiZmjMabkctpSGYw3rqiumQ3MV6li0TY+dBjNB9V7yldCvv9ud4Wws9PLtWHx
|
|
7
|
-
cerYnGq6u9JRTT8NE8M+B7Xn7nKvt+6XGlBJJwIDAQABAoIBAA8haPd4Sgcradnr
|
|
8
|
-
p7i29M49E7iCh/F2jRxsR83Bm0CCjv8U4i48eQvxvcM7ErUwrfpfu1dU+MylsO1d
|
|
9
|
-
VqKre3mGUk89Bl3gdVUxAhDr8IKBgxOZq8lBchBjcxGg0KzbYTnzMLzAemdUDxm4
|
|
10
|
-
rVS9HY+sjnhhYFbJoC2abSkPTqMInxOGfeb68C/MiKzckZO4P/ncgU83fxmOi0Xf
|
|
11
|
-
h4hcxtdmd0ZjhkDgvyBv6tOdwvwH6U7zKkrqBjY2q0OYFLGcNSjjdYmTKTnK8iqk
|
|
12
|
-
YyFfqyg3c0ZyqkqmHFaXkiJiP5zpS1rFXORXNnTleMaRU7DZUTO8RjhBXoEX1VXp
|
|
13
|
-
g+5UBoECgYEA6b9Dzu/zPnSUGIaY15IxtQykXt0LGosIE/bfymtf6J99YpYbxcY/
|
|
14
|
-
fy43U5glCKj1YJlsFQMMir3FbJBfQNWD4d7sElyHJYiwkn3kbXwIILyumK3XIPnh
|
|
15
|
-
hVaMPLKM9j4CIMefj0nVyCHWWdfz/yVJlNFBly+olHrpn6+4dY7mw0kCgYEA3i3D
|
|
16
|
-
icKPXjpV8lQs26m50Q1mquV59f7AbbjjYw8v6kXs3EmIqvCGPZpFOoD4EnZXU4S+
|
|
17
|
-
irxWgbEtYT97KMNrCHkFn2af7BqezJ8v6o5vPZC7TgUMJHykTN+n8tG7CG98mYmV
|
|
18
|
-
kdTogWO/p+fyu6BdRUxGeO/0q7puVHHbHVzoOO8CgYEAk0qr3u2C+LsbSy0diNGd
|
|
19
|
-
svmJZiGhypMLfxEUygfJQtuldgci7whSoMCtqmZ4B7H4FWv4GHF4aMDWc+exrjgd
|
|
20
|
-
R6piVduqabNtmJHt7DO5J2/eEWWR5zyuqIf2DJVykARY8PD5kaA0L01rNegH36JO
|
|
21
|
-
cJE/5JXqg83EA5UGBkYLEckCgYAkcaFHcZCOxkbezwvkpDyEnAwhMC8HONhbpx41
|
|
22
|
-
W4JijUHDCJTQZU+/vxRn+ku2y46bdoTCwQ33jBaDgyQylYtzAlb3xJ+q3Nr7eYkk
|
|
23
|
-
kmSQ1rLCo3VQbtmMeotT+y8QvSjVDopoN2JEBxai9hsMx8tE2LQelk2t9ZCvbVWh
|
|
24
|
-
xWGaJQKBgQCf6qjON5bqVyDh0sZOavngBXh4cjA47GCWnUlXNkdCTJ6Q2upd80jC
|
|
25
|
-
mzJOeofZheY6OVrpvn1GVU+R57pM0XYsz4vC8ZXMcF5Yr888C6DM4sqWWJn0GAwU
|
|
26
|
-
g4i7PDqi8ACxkRUIUCQw/m4HLSqg915mQyAckCtq6AP6kCk1c/nE9w==
|
|
27
|
-
-----END RSA PRIVATE KEY-----
|
data/gem-public_cert.pem
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
|
2
|
-
MIIDdDCCAlygAwIBAgIBATANBgkqhkiG9w0BAQUFADBAMRAwDgYDVQQDDAdhcmll
|
|
3
|
-
amFuMRcwFQYKCZImiZPyLGQBGRYHYXJpZWphbjETMBEGCgmSJomT8ixkARkWA25l
|
|
4
|
-
dDAeFw0xMzA3MjMxMjMxMTRaFw0xNDA3MjMxMjMxMTRaMEAxEDAOBgNVBAMMB2Fy
|
|
5
|
-
aWVqYW4xFzAVBgoJkiaJk/IsZAEZFgdhcmllamFuMRMwEQYKCZImiZPyLGQBGRYD
|
|
6
|
-
bmV0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyt2l9tkc4bL1zgKZ
|
|
7
|
-
k9UiNbqNElgCuRzV1pfk32Sb+S57RH9wCE8mkYituGW0mLAjxg9h/lcn424Q62D+
|
|
8
|
-
vlSJsHyjsgisWtu3ZHg1uy6VE8xWlCaDtvOas51M8LNyQtS+f5pTy0WB4BOcKk5M
|
|
9
|
-
9TwJDK4zX/CJBErxttBhYx1QJhiERHgg1wGFXQpUQAW5HW4FlXWgXtfvfljj9eE1
|
|
10
|
-
bw5Qz3ycj8NE83kQOSS9NaKwX/ma60jbJJakiZmjMabkctpSGYw3rqiumQ3MV6li
|
|
11
|
-
0TY+dBjNB9V7yldCvv9ud4Wws9PLtWHxcerYnGq6u9JRTT8NE8M+B7Xn7nKvt+6X
|
|
12
|
-
GlBJJwIDAQABo3kwdzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU
|
|
13
|
-
ZwHc1uXiVvbwy96Xts52wSQspHQwHgYDVR0RBBcwFYETYXJpZWphbkBhcmllamFu
|
|
14
|
-
Lm5ldDAeBgNVHRIEFzAVgRNhcmllamFuQGFyaWVqYW4ubmV0MA0GCSqGSIb3DQEB
|
|
15
|
-
BQUAA4IBAQAyJDUHFZ8zy2L1PWTRQVxdTNfFLBwp/dj+vBgUrLrIL4L1sjTd8gli
|
|
16
|
-
gKyC8EB4aWLQ3Ir1myHU/52mhjtijKvhN7PjedXnX1raLe276aivjkArn27iuspg
|
|
17
|
-
sGjp2OtGm611w/h4ZC8n+HUzCMQaOTzNWOXQIIIjlNfYBSiPz9/b6zDtyuHxDhux
|
|
18
|
-
bIKVdAi8hBPMZF3l9OMIoslpwPv5d0acAtRKX2YTaZgnoY9yKlrfP4vSqm2bdDhf
|
|
19
|
-
7NiYH0Kuw9dhd6KTJkM9nkX0tYPEksLImmnf2di9+uZVXaXS0eNwX8OvHb48eoyM
|
|
20
|
-
fYCqplVyUXI9SqwzVPOD1Bf+drhGNR2O
|
|
21
|
-
-----END CERTIFICATE-----
|
data/gemfiles/activemodel-3-2
DELETED