license_plate_validator 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +13 -1
- data/CHANGELOG +12 -0
- data/README.md +6 -2
- data/lib/license_plate_validator.rb +14 -7
- data/lib/license_plate_validator/locales/de.yml +4 -0
- data/lib/license_plate_validator/locales/nl.yml +1 -1
- data/lib/license_plate_validator/version.rb +1 -1
- data/spec/license_plate_validator_spec.rb +32 -7
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5410ab6ff6ba06432f84418f8f468a25abf081c
|
4
|
+
data.tar.gz: 569f7247789876b239bafeda9978f563ab89e7fd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ebc4e2aa79baa457bcd8561cc32b5ec40ce1d2c7290a40780d6c1cadc2434552a6db08a5cc1bae18d32dd3f6d19c8e3bea3cb58aca0749af6c15d4d1d553d6c
|
7
|
+
data.tar.gz: 6794cbfee6d307b02357ea69b36aeffbde7f352e7028410d7713cd3e4e770088e69d9b99870154d407228735a5dd39cb5a34d609ad0103f9550a0b508d46aa7b
|
data/.travis.yml
CHANGED
@@ -1,7 +1,19 @@
|
|
1
1
|
language: ruby
|
2
|
+
|
3
|
+
notifications:
|
4
|
+
email: false
|
5
|
+
|
2
6
|
rvm:
|
3
7
|
- 2.0.0
|
4
|
-
- 1.
|
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
|
+
|
5
17
|
gemfile:
|
6
18
|
- gemfiles/activemodel-4
|
7
19
|
- gemfiles/activemodel-3-2
|
data/CHANGELOG
ADDED
data/README.md
CHANGED
@@ -11,11 +11,13 @@ only validate Dutch license plates.
|
|
11
11
|
|
12
12
|
## Features
|
13
13
|
|
14
|
-
|
14
|
+
Validates Dutch license plates ("kentekens"), includes all ten common Dutch license
|
15
15
|
plate types.
|
16
16
|
|
17
17
|
Special license plates (like those for the Royal family) are not supported.
|
18
18
|
|
19
|
+
Also supports most german license plates, including most diplomatic formats.
|
20
|
+
|
19
21
|
## Installation
|
20
22
|
|
21
23
|
Add this line to your application's Gemfile:
|
@@ -66,10 +68,11 @@ The `Proc` must return either `nil` (accept all the things) or a valid country c
|
|
66
68
|
### Supported countries
|
67
69
|
|
68
70
|
* `:nl` Netherlands; all common "sidecode" number formats.
|
71
|
+
* `:de` Germany; all regular forms as well as the common diplomatic variants
|
69
72
|
|
70
73
|
## I18n
|
71
74
|
|
72
|
-
Locales for English and
|
75
|
+
Locales for English, Dutch and German are provided. See [`lib/license_plate_validator/locales`](https://github.com/ariejan/license_plate_validator/tree/master/lib/license_plate_validator/locales)
|
73
76
|
for details.
|
74
77
|
|
75
78
|
## Contributing
|
@@ -99,6 +102,7 @@ specs.
|
|
99
102
|
## Contributor
|
100
103
|
|
101
104
|
* Pascal Widdershoven - for the original regexes for Dutch license plate numbers.
|
105
|
+
* Marcus Ilgner, evopark - for german license plates
|
102
106
|
|
103
107
|
## License
|
104
108
|
|
@@ -13,6 +13,19 @@ class LicensePlateValidator
|
|
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
15
|
/^([a-zA-Z]{1})-?([0-9]{3})-?([a-zA-Z]{2})$/
|
16
|
+
],
|
17
|
+
# Germany
|
18
|
+
de: [
|
19
|
+
# first part: distinguisher for area
|
20
|
+
# second part (a) 1-2 characters followed by 1-4 numbers
|
21
|
+
# or (b) for diplomatic purposes:
|
22
|
+
# 1. a 4-digit number starting with 9
|
23
|
+
# 2. a 2-3-digit-number (country identifier) followed by 1-3 digits
|
24
|
+
# diplomatic license plates can be followed by a single letter
|
25
|
+
# 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}[\- ]\d{1,4}H?)|(9\d{3})|(\d{2,3}\-\d{1,3})[a-z]?)$/i,
|
27
|
+
# more diplomatic license plates ;)
|
28
|
+
/^0[\- ]\d{1,3}[\- ]\d{1,3}\w?$/i
|
16
29
|
]
|
17
30
|
}.freeze
|
18
31
|
|
@@ -21,7 +34,7 @@ class LicensePlateValidator
|
|
21
34
|
country: nil
|
22
35
|
}.merge(options)
|
23
36
|
|
24
|
-
@raw =
|
37
|
+
@raw = raw || ''
|
25
38
|
end
|
26
39
|
|
27
40
|
attr_reader :raw
|
@@ -47,12 +60,6 @@ class LicensePlateValidator
|
|
47
60
|
def to_s
|
48
61
|
raw
|
49
62
|
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
def normalize(input)
|
54
|
-
input.to_s.upcase.strip.gsub(/[^A-Z0-9]/, '')
|
55
|
-
end
|
56
63
|
end
|
57
64
|
|
58
65
|
require 'license_plate_validator/version'
|
@@ -12,18 +12,13 @@ describe LicensePlateValidator do
|
|
12
12
|
expect { LicensePlateValidator.new("a", country: :nl) }.not_to raise_error
|
13
13
|
expect { LicensePlateValidator.new("a", country: nil) }.not_to raise_error
|
14
14
|
end
|
15
|
-
|
16
|
-
it 'normalizes the input string' do
|
17
|
-
expect(LicensePlateValidator.new('60-NFH-1').to_s).to eql('60NFH1')
|
18
|
-
expect(LicensePlateValidator.new('fz-xx-61').to_s).to eql('FZXX61')
|
19
|
-
end
|
20
15
|
end
|
21
16
|
|
22
17
|
context "#supported countries" do
|
23
18
|
subject { LicensePlateValidator.new("a") }
|
24
19
|
|
25
20
|
it "returns array of symbols" do
|
26
|
-
expect(subject.supported_countries).to eql([:nl])
|
21
|
+
expect(subject.supported_countries).to eql([:nl, :de])
|
27
22
|
end
|
28
23
|
end
|
29
24
|
|
@@ -91,7 +86,7 @@ describe LicensePlateValidator do
|
|
91
86
|
"DEF-123",
|
92
87
|
"123-DEF",
|
93
88
|
"DEFGHI",
|
94
|
-
"123456"
|
89
|
+
"123456",
|
95
90
|
]
|
96
91
|
|
97
92
|
NL_VALID_SAMPLES.each do |number|
|
@@ -108,4 +103,34 @@ describe LicensePlateValidator do
|
|
108
103
|
end
|
109
104
|
end
|
110
105
|
end
|
106
|
+
|
107
|
+
context "DE - Germany" do
|
108
|
+
DE_VALID_SAMPLES = [
|
109
|
+
"K-AB-123",
|
110
|
+
"GL-A-123H",
|
111
|
+
"K-9123",
|
112
|
+
"0-12-123",
|
113
|
+
"0-12-234H"
|
114
|
+
]
|
115
|
+
|
116
|
+
DE_INVALID_SAMPLES = [
|
117
|
+
"FOO-AB-123",
|
118
|
+
"123",
|
119
|
+
"K-2"
|
120
|
+
]
|
121
|
+
|
122
|
+
DE_VALID_SAMPLES.each do |sample|
|
123
|
+
it "accepts '#{sample}'" do
|
124
|
+
license = LicensePlateValidator.new(sample, country: :de)
|
125
|
+
expect(license).to be_valid
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
DE_INVALID_SAMPLES.each do |sample|
|
130
|
+
it "rejects '#{sample}'" do
|
131
|
+
license = LicensePlateValidator.new(sample, country: :de)
|
132
|
+
expect(license).to_not be_valid
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
111
136
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: license_plate_validator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ariejan de Vroom
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- ".gitignore"
|
78
78
|
- ".rspec"
|
79
79
|
- ".travis.yml"
|
80
|
+
- CHANGELOG
|
80
81
|
- Gemfile
|
81
82
|
- LICENSE.txt
|
82
83
|
- README.md
|
@@ -88,6 +89,7 @@ files:
|
|
88
89
|
- gemfiles/standalone
|
89
90
|
- lib/license_plate_validator.rb
|
90
91
|
- lib/license_plate_validator/active_model.rb
|
92
|
+
- lib/license_plate_validator/locales/de.yml
|
91
93
|
- lib/license_plate_validator/locales/en.yml
|
92
94
|
- lib/license_plate_validator/locales/nl.yml
|
93
95
|
- lib/license_plate_validator/version.rb
|
@@ -115,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
117
|
version: '0'
|
116
118
|
requirements: []
|
117
119
|
rubyforge_project:
|
118
|
-
rubygems_version: 2.2.
|
120
|
+
rubygems_version: 2.2.2
|
119
121
|
signing_key:
|
120
122
|
specification_version: 4
|
121
123
|
summary: Validate license plate numbers for countries that support it.
|