uk_postcode 2.0.0 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES +35 -0
- data/README.md +88 -37
- data/lib/uk_postcode/abstract_postcode.rb +4 -0
- data/lib/uk_postcode/country_lookup.rb +2 -2
- data/lib/uk_postcode/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5be9121c81ffedda98694f2c1fb84e769047d7c
|
4
|
+
data.tar.gz: 2f37c078760e05e293694dac94de9b98aac4226a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88fd9a5d8b63c7f3325263708d6022b0f16209de37172b184ab014a0d75d575bf5d37159e730b2faee3c5832659a604d0aabb8123bda3175d7eb90464eb56d04
|
7
|
+
data.tar.gz: 35cf99808de33ec16f8e4a93b5c4e8efe1c0a9a88f14e0502696254b97ab7b0b7318aee102157c0d3de6d284775f6d694ada8fcf69068a3dcbee3058155f82e5
|
data/CHANGES
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
2.1.0 (2015-03-21)
|
2
|
+
|
3
|
+
* Updated country lookup using latest ONS Postcode Database (November 2014).
|
4
|
+
* Added a #full_valid? method for convenience.
|
5
|
+
* Fix: corrected references to test/ in Makefile to be spec/.
|
6
|
+
|
7
|
+
2.0.0 (2015-02-08)
|
8
|
+
|
9
|
+
* Significant breaking API change: UKPostcode.new -> UKPostcode.parse.
|
10
|
+
* Fix: gem now builds on Ruby 1.9.
|
11
|
+
* Moved tests to RSpec.
|
12
|
+
* Added #country method to return the country of a postcode (where known).
|
13
|
+
* Now testing with the ONS Postcode Database (includes Northern Ireland).
|
14
|
+
|
15
|
+
1.0.1 (2014-12-14)
|
16
|
+
|
17
|
+
* Made licensing (MIT) explicit.
|
18
|
+
* Fix: Now works with Ruby 1.9.
|
19
|
+
|
20
|
+
1.0.0 (2010-11-05)
|
21
|
+
|
22
|
+
* Fix: outcodes in the form [A-Z]1[0-9] are now parsed correctly.
|
23
|
+
|
24
|
+
0.0.3 (2010-06-01)
|
25
|
+
|
26
|
+
* Automatically correct more 0s that should be Os.
|
27
|
+
|
28
|
+
0.0.2 (2010-01-09)
|
29
|
+
|
30
|
+
* Fix: some real postcodes were not considered to be valid.
|
31
|
+
* Correct mistaken I/O/1/0 inputs.
|
32
|
+
|
33
|
+
0.0.1 (2010-01-06)
|
34
|
+
|
35
|
+
* Initial release.
|
data/README.md
CHANGED
@@ -23,52 +23,54 @@ Parse and extract sections of a full postcode:
|
|
23
23
|
|
24
24
|
```ruby
|
25
25
|
pc = UKPostcode.parse("W1A 2AB")
|
26
|
-
pc.valid?
|
27
|
-
pc.full?
|
28
|
-
pc.
|
29
|
-
pc.
|
30
|
-
pc.
|
31
|
-
pc.
|
32
|
-
pc.
|
33
|
-
pc.
|
26
|
+
pc.valid? # => true
|
27
|
+
pc.full? # => true
|
28
|
+
pc.full_valid? # => true
|
29
|
+
pc.outcode # => "W1A"
|
30
|
+
pc.incode # => "2AB"
|
31
|
+
pc.area # => "W"
|
32
|
+
pc.district # => "1A"
|
33
|
+
pc.sector # => "2"
|
34
|
+
pc.unit # => "AB"
|
34
35
|
```
|
35
36
|
|
36
37
|
Or of a partial postcode:
|
37
38
|
|
38
39
|
```ruby
|
39
40
|
pc = UKPostcode.parse("W1A")
|
40
|
-
pc.valid?
|
41
|
-
pc.full?
|
42
|
-
pc.
|
43
|
-
pc.
|
44
|
-
pc.
|
45
|
-
pc.
|
46
|
-
pc.
|
47
|
-
pc.
|
41
|
+
pc.valid? # => true
|
42
|
+
pc.full? # => false
|
43
|
+
pc.full_valid? # => false
|
44
|
+
pc.outcode # => "W1A"
|
45
|
+
pc.incode # => nil
|
46
|
+
pc.area # => "W"
|
47
|
+
pc.district # => "1A"
|
48
|
+
pc.sector # => nil
|
49
|
+
pc.unit # => nil
|
48
50
|
```
|
49
51
|
|
50
52
|
Postcodes are converted to a normal or canonical form:
|
51
53
|
|
52
54
|
```ruby
|
53
55
|
pc = UKPostcode.parse("w1a1aa")
|
54
|
-
pc.valid?
|
55
|
-
pc.area
|
56
|
-
pc.district
|
57
|
-
pc.sector
|
58
|
-
pc.unit
|
59
|
-
pc.to_s
|
56
|
+
pc.valid? # => true
|
57
|
+
pc.area # => "W"
|
58
|
+
pc.district # => "1A"
|
59
|
+
pc.sector # => "1"
|
60
|
+
pc.unit # => "AA
|
61
|
+
pc.to_s # => "W1A 1AA"
|
60
62
|
```
|
61
63
|
|
62
64
|
And mistakes with I/1 and O/0 are corrected:
|
63
65
|
|
64
66
|
```ruby
|
65
67
|
pc = UKPostcode.parse("WIA OAA")
|
66
|
-
pc.valid?
|
67
|
-
pc.area
|
68
|
-
pc.district
|
69
|
-
pc.sector
|
70
|
-
pc.unit
|
71
|
-
pc.to_s
|
68
|
+
pc.valid? # => true
|
69
|
+
pc.area # => "W"
|
70
|
+
pc.district # => "1A"
|
71
|
+
pc.sector # => "0"
|
72
|
+
pc.unit # => "AA
|
73
|
+
pc.to_s # => "W1A 0AA"
|
72
74
|
```
|
73
75
|
|
74
76
|
Find the country of a full or partial postcode (if possible: some outcodes span
|
@@ -93,11 +95,12 @@ Invalid postcodes:
|
|
93
95
|
|
94
96
|
```ruby
|
95
97
|
pc = UKPostcode.parse("Not Valid")
|
96
|
-
pc.valid?
|
97
|
-
pc.full?
|
98
|
-
pc.
|
99
|
-
pc.
|
100
|
-
pc.
|
98
|
+
pc.valid? # => false
|
99
|
+
pc.full? # => false
|
100
|
+
pc.full_valid? # => false
|
101
|
+
pc.area # => nil
|
102
|
+
pc.to_s # => "Not valid"
|
103
|
+
pc.country # => :unknown
|
101
104
|
```
|
102
105
|
|
103
106
|
## Tips for Rails
|
@@ -121,7 +124,7 @@ To validate, use something like this:
|
|
121
124
|
class PostcodeValidator < ActiveModel::EachValidator
|
122
125
|
def validate_each(record, attribute, value)
|
123
126
|
ukpc = UKPostcode.parse(value)
|
124
|
-
unless ukpc.
|
127
|
+
unless ukpc.full_valid?
|
125
128
|
record.errors[attribute] << "not recognised as a UK postcode"
|
126
129
|
end
|
127
130
|
end
|
@@ -171,14 +174,60 @@ files and run the tests via Rake instead:
|
|
171
174
|
$ rake
|
172
175
|
```
|
173
176
|
|
177
|
+
## Occasionally asked questions
|
178
|
+
|
179
|
+
### Does it support Father Christmas's postcode?
|
180
|
+
|
181
|
+
No. The old postcode was SAN TA1; the current one is [XM4 5HQ][santa].
|
182
|
+
(XMAS HQ, geddit?)
|
183
|
+
For most people, these probably aren't useful, as they don't correspond to
|
184
|
+
actual locations, and are only used by Royal Mail internally.
|
185
|
+
|
186
|
+
See "Adding additional formats" if you'd like to support this.
|
187
|
+
|
188
|
+
### Does it support BFPO?
|
189
|
+
|
190
|
+
No. They're not really postcodes, though they serve a similar purpose.
|
191
|
+
Some of them are abroad; some of them are on boats that move around; some of
|
192
|
+
them are ephemeral and exists only for particular operations.
|
193
|
+
This library has been designed with the assumption that most people won't want
|
194
|
+
to handle BFPO codes, and that those that do can do so explicitly.
|
195
|
+
|
196
|
+
See "Adding additional formats" if you'd like to support them.
|
197
|
+
|
198
|
+
The new [BF1 format][bfpo] postcodes *can* be parsed, although their location
|
199
|
+
is always unknown.
|
200
|
+
|
201
|
+
## Adding additional formats
|
202
|
+
|
203
|
+
Parsing is implemented via the `ParserChain` class, which attempts to parse
|
204
|
+
the supplied text via each parser in turn.
|
205
|
+
The `UKPostcode.parse` method is effectively a thin wrapper that does this:
|
206
|
+
|
207
|
+
```ruby
|
208
|
+
chain = ParserChain.new(GiroPostcode, GeographicPostcode, InvalidPostcode)
|
209
|
+
chain.parse(str)
|
210
|
+
```
|
211
|
+
|
212
|
+
Each class passed to `ParserChain.new` must implement a class method
|
213
|
+
`parse(str)` and return either a postcode object (see `AbstractPostcode`) or
|
214
|
+
nil.
|
215
|
+
The first non-nil object is returned.
|
216
|
+
|
217
|
+
`InvalidPostcode` is at the end of the chain to ensure that a postcode object
|
218
|
+
is always returned.
|
219
|
+
|
220
|
+
To add an additional class, subclass `AbstractPostcode`, implement the abstract
|
221
|
+
methods, and instantiate your own `ParserChain`.
|
222
|
+
|
174
223
|
## Licensing
|
175
224
|
|
176
225
|
You may use this library according to the terms of the MIT License; see
|
177
226
|
COPYING.txt for details.
|
178
227
|
|
179
|
-
The regular expressions in `
|
180
|
-
Directory according to the terms of the
|
181
|
-
Licence][onspd-lic].
|
228
|
+
The regular expressions in `country_lookup.rb` are derived from the ONS
|
229
|
+
Postcode Directory according to the terms of the
|
230
|
+
[Open Government Licence][onspd-lic].
|
182
231
|
|
183
232
|
> Under the terms of the Open Government Licence (OGL) […] anyone wishing to
|
184
233
|
> use or re-use ONS material, whether commercially or privately, may do so
|
@@ -191,6 +240,8 @@ data in the ONSPD, this is not used to generate the regular expressions.
|
|
191
240
|
Fortunately, Northern Ireland postcodes are very simple: they all start with
|
192
241
|
`BT`!
|
193
242
|
|
243
|
+
[bfpo]: https://www.gov.uk/government/publications/british-forces-post-office-locations
|
194
244
|
[mys]: http://parlvid.mysociety.org/os/
|
195
245
|
[onspd]: http://www.ons.gov.uk/ons/guide-method/geography/products/postcode-directories/-nspp-/index.html
|
196
246
|
[onspd-lic]: http://www.ons.gov.uk/ons/guide-method/geography/beginner-s-guide/licences/index.html
|
247
|
+
[santa]: http://services.royalmail.com/santa-schools
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module UKPostcode
|
2
2
|
COUNTRY_LOOKUP = {
|
3
|
-
england: /^(?:AL|B[123456789ABDHLNRS]|C(?:A(?:1|2|3|4|5|6(?:4|5(?:G|H[TU]|L[GHJLNPQRSTUWXYZ]|N|P|Q|R|S|T|U|W|X|Y)|6|7)|7|8|9)|B|H(?:1(?:1|2|3|4(?:A|B|D|E|F|G|H|J|L|N|P|Q[
|
3
|
+
england: /^(?:AL|B[123456789ABDHLNRS]|C(?:A(?:1|2|3|4|5|6(?:4|5(?:G|H[TU]|L[GHJLNPQRSTUWXYZ]|N|P|Q|R|S|T|U|W|X|Y)|6|7)|7|8|9)|B|H(?:1(?:1|2|3|4(?:A|B|D|E|F|G|H|J|L|N|P|Q[ABDFGHJNPQRSTUW]|R|S|W|X|Y|Z)|5|6(?:A|B[DEFGHJUW]|D[ABEFGHLNPQRSTUWXYZ]|E[ADEFGHJLNPQRSTUWXYZ]|F|G|H[DEFGJLNQSTUWXYZ]|J|L|N|P|Q[AP]|R|W|X|Y|Z)|9)|2(?:1|2|3|4|5|6|7|89(?:A[ABEFGHJLNPQRSTUWXYZ]|B)|99(?:A[BDEFGHJLNPQRSTUWXYZ]|B|D|E))|3(?:5|6|7|8|9|0|1|2|3|49(?:A[ABDEFGHJLNQRSTUWXYZ]|B|D|E|S|T|Z))|4(?:0(?:EJ|W[BDFGHRU]|Y[HJ]|Z[ADEFGHJLPTUWY])|7|8(?:A|B|D|E|H|J|L[BDEFLNPSUXYZ]|N[DEFGLNPQRSTUWXYZ]|P[ADEFGHJLNPQRSTUWXZ]|Q[ADU]|R[AD]|W[ABDEFGHJLPQRSTUWXYZ]|X|Y|Z|0|1|2|3|4|5|6|7|8|9)|9(?:A[DEFG]|BW|D[EFGHJLNPQRSTUW]|E[BDEFGJLNPQRSTUWXYZ]|F|G[ABJ]|H|J|L|N|P[XZ]|Q|R|T|U|W|X[SUY]|Y|Z|0|1|2|3|4|5|6|7|8|9)|1|2|3|4|5|6)|6(?:5[0123456789]|6[0123456789]|9AB|0|1|2|3|4)|708(?:A[ADEGHJLNPQRSTUWXYZ]|B|D)|883|9)|M|O|R|T|V|W)|D(?:A|E|G165(?:H[TUZ]|J[AB])|H|L|N|T|Y)|E[123456789CNX]|FY|G(?:I|L(?:1(?:1|2|3|4|5|9|0|6(?:7|8(?:A|B|D|E|H|J|L|N|P[ADEFGHJLNPQRSTUWXYZ]|Q|R|S|T|W|Y|Z)|9)|7|8)|2|3|4|5|6|7|8|9)|U)|H(?:A|D|G|P|R(?:1|2|3(?:5(?:AL|B[BDERZ]|E[NPRSTUWXYZ]|FE|H|Q[XYZ]|R[ABDFGNQW]|S[TUXY]|T[ABDEFGP]|W[NUX]|XA|Y[ADFJNQRSTWX])|6(?:A|B|D|E[ABDEFGHJLNPQRSTUWZ]|H[EFGHJPQSTUWXYZ]|J[ABDEFGHLNPQRSTZ]|L|N|P|Q|R|S|W|Y[ABDEFHJLNPQU]|Z))|4|5(?:3(?:A|B|D|E[ABDEFGHJLNQRSTUWXYZ]|F|G|H|J|L|N[ABEFGHJLNQ]|P[BFGHQTUXYZ]|QA|R[BDEFGHJLNPQRSTUWXYZ]|S|T|U|W|X|Y|Z)|8)|6|7|8|9)|U|X)|I[GP]|KT|L(?:1|2|3|4|5|6|7|8|9|A|D(?:71(?:DY|EA|N[BDEF]|T[NPRSUWY]|U[ABDEFW]|Y[SUY]|ZJ)|82(?:H[HLNPRSTUWY]|L[EGHLNPRSTUWY]|N[ABD]|P[RS]))|E|L145(?:B[UY]|D[ABDEFGLNPRSUWY]|E[ABDEFHLNW]|L[JP])|N|S|U)|M[123456789EK]|N(?:1|2|3|4|5|6|7|8|9|E|G|N|P(?:167(?:A|B|D|E|F|H|J|L|N[AFGHJLNPQRSTUW]|P|Q|R|WA|Y[BDEFGJLN]|Z[AB])|25(?:3S[RSTUX]|4(?:AS|L[DHJLNPQRTXYZ]|N[ABDE])|5(?:Q[JL]|R[DGHJLNPQRSTWY]))|5(?:3(?:Q[JL]|R[GHJLNPQRSTWY]|S[RSTUX])|4(?:L[HJLNPQRSTUWXYZ]|N[AB]))|6(?:6SG|7(?:A|B|D|E|F|H|J|L|N[AFGJLNPQRSTUW]|P|Q|R|Y|Z))|78HH)|R|W)|O|P[ELOR]|R|S(?:1|2|3|4|5|6|7|8|9|E|G|K|L|M|N|O|P|R|S|T|W|Y(?:1(?:1|2|3(?:A|B|D|E|F|G|H|J|L|N|P|Q|R|S|T|W|X|Y|Z|1|2(?:A|B|D|E|F|G|H|J[ABDEFGL]|L[FGT]|N|P[ADEFGHPQRSTUXYZ]|Q|R|S|T|W|X|Y|Z)|3(?:A[AB]|J[GHJLNPQRSTUWXYZ]|L|N[EFGHJLNPQRSTUWXY]|P[FG]|W[ADFGHJXYZ]|X|Y)|4(?:A|B|D|E|H|J|L|N|P|Q|R[ABDFG]|W)|9)|4(?:A|B|D|E|H|J|L|N|P|Q|R|S|T|U|W|Y|7(?:A[ABDEFGHJLPQRSTUWXY]|B|D|E|H[ABDEFGHJLNPQRSTUWXZ]|J[ABDEFJLNPRSWXY]|N[EFGHJQ]|P|U|W|Y)|8)|9[ABDEFGHJLSTUWX]|0(?:0(?:W[AHJQZ]|Z)|1|7(?:A|B|D|E|G|H|J[ABDPRSUXYZ]|L|N[ABDGHJLNPQRW]|P[BDEHJLNPQRW]|R|S|T|U|W|X|Y|Z)|8|9(?:A|B[ABDEFGHJLNQSTUXYZ]|D|E|F|H[ABDEFGHJLNPQRSTUWXY]|J[ABDEFQ]|L[SUXYZ]|N|P[BDEFGHJLNPQRSTUWXYZ]|Q|R|W|Y))|56(?:A[XY]|B[DEGHJLNPQSTUWXYZ]|D[ABDEFGPR]|E[DEP]|H[TUY]|S[PYZ]|T[RZ]|U[BDEFGHQ]|Z))|2(?:2(?:P|5WD|6(?:E[ABDEFGHJLQ]|H[BD]|JX|L[GLNQUWXYZ]|N[TW]|W[ABEHJXYZ]))|5[ABDEGHJLNPQRSTUWXYZ]|6|18(?:D[LN]|E[PRW]|J[LNPQRSTUWXY]|LB))|3|4|5(?:0(?:A|B|D|E|F|H|J[ABDEFGHPQWXYZ]|L|N|P|Q|R|S|T|U|W|X|Y|Z)|6|7|8|9(?:A[ABDEFGHJLNPQ]|B[XYZ]|D|E[ABDEFGHJLNPQRSTWXYZ]|FA|G[ABDEFGHJLQXYZ]|H|J|L[ABEFGHJLNPQRSTUWXYZ]|N|P|Q|R|SA|W|X|Y|Z))|6|7(?:0|7|8(?:A|B|D|E|H|J|L|N|P[ABDEFGHJLNPQRW]|Q|W)|9)|8|9(?:5(?:A|B|D|E|F|H|J[GHJLNQRSTUXY]|L|N|P|W)|9)))|T(?:A|D(?:1(?:24(?:Q[ABDEFGHJLNPQRSTW]|R|S|T|U|WB|X[ABDFGHJLNQ])|5(?:1(?:A|B[ABEFGHJLNPQSUWXYZ]|D|E|F|H|J|L|N|P|Q|R|S[ABDEJLNPWXY]|T[ABQUX]|U[ABDENPQRTUXY]|W[FX]|X[XY]|Y|Z)|2|9))|90T[JPRSTW])|F|N|Q|R|S|W)|U|W|Y)/,
|
4
4
|
scotland: /^(?:AB|CA65(?:A|B|D|E|H[ABDEFGHJLNPQRSWXYZ]|J|L[ABDE])|D(?:D|G(?:1(?:1|2|3|4|9|0|65(?:A|B|D|E|F|G|H[ABDEFGHJLNPQRSWXY]|J[DEFGHJLNPQRSTUWXYZ]|L|N|Q|U|W|X|Y))|2|3|4|5|6|7|8|9))|EH|FK|G[123459678]|HS|IV|K[AWY]|ML|P[AH]|TD(?:1(?:1|2(?:A|B|D|E|H|J|L|N|P|Q|R|S|T|U|W|Y|4(?:A|B|D|E|F|H|J|L|N|QU|W[ADX]|XE|Y)|9)|3|9|0|4|51(?:BT|S[UZ]|T[DEFGHJLNPRSTW]|U[FGHJLSWZ]|W[YZ]|X[ABGHJLNQTUWZ]))|2|3|4|5|6|7|8|9(?:0(?:A|B|D|E|H|J|L|N|P|Q|R|S|T[ABDEFGHLNQUXY]|W|Y|Z)|1|7|8|9))|Z)/,
|
5
|
-
wales: /^(?:C(?:F|H(?:1(?:
|
5
|
+
wales: /^(?:C(?:F|H(?:1(?:4Q[LX]|6(?:B[ABLPQRSTXYZ]|D[DJ]|EB|H[ABH]|Q[BEFGQ]))|2(?:89AD|99AA)|349AP|4(?:0(?:A|B|D|E[ABDEFGHLNPQRSTUWXYZ]|F|G|H|J|L|N|P|Q|R|S|T|W[AE]|X|Y[PRSTUXY]|Z[BNQRS])|8(?:G|L[AGHJQRTW]|N[ABH]|P[BY]|Q[BEFGHJLNPQRSTWYZ]|R[BEFGHJLNPQRSTUWXYZ]|S|T|U|WN)|9(?:A[ABHJLNPQRSTUWXYZ]|B[ABDEFGHJLNPQRSTUXYZ]|D[ABDXYZ]|E[AH]|GD|P[ABDFG]|XA))|5|6(?:5[ABDEFGHJLNPQRSTUWXYZ]|6[ABDEFHJLZ]|9(?:A[DEFGJLNPQRSTUWXYZ]|B|D))|7(?:1|2|3|4|5|6|9|08A[BF])|8(?:7|8[ABDEHJLNPQRSTWYZ]|9)))|GL168PB|HR(?:3(?:5(?:A[ABDEFGHJNPQRSTUWXYZ]|B[AGHJLNPQSTUWXY]|D|E[ABDEFGHJLQ]|F[AD]|J|L|N|P|Q[ABDEFGHJLNPQRSTUW]|R[EHJLPRSTUXYZ]|S[ABDEFGHJLNPQRSWZ]|T[HRSTUX]|W[ALPQRSTWYZ]|XZ|Y[BEGHLPU]|Z)|6(?:E[XY]|H[ALN]|J[JUWXY]|YG))|53(?:EP|N[DPRSTUWXYZ]|P[ADEJLNPRSW]|Q[BDEFGHJLNPQRSTUWXZ]|RA))|L(?:D(?:1|2|3|4|5|6|7(?:1(?:A|B|D[ABDEFGHJLNPQRSTUW]|E[BDEFGHNPRSTUWY]|H|L|N[AGHJLNPQRSTUWY]|P|R|S|T[ABDET]|U[GHPRTUY]|W|Y[ABDEFGHLNPRTW]|ZY)|9)|82(?:A|B|D|E|G|H[ABDEFG]|L[ABDF]|N[EFGHJLNPQRSTUWXY]|P[ABDEFGHLNPTUWY]|R|S|T|U|W|Y|Z))|L(?:1(?:1|2|3|4(?:1|2|3|4|5(?:A|B[ABDEFGHJLNPQSTWXZ]|D[HJ]|E[PQRSTUYZ]|H|L[ABDEFGHLNQRSTUWY]|N|P|Q|R|S|W|Y|Z)|6)|5|6|7|8|9)|2|3|4|5|6|7))|NP(?:1(?:0|2|4|5|6(?:A|B|D|E|F|G|H|J|L|N|P|Q|R|X|Y|Z|5|6|7(?:NX|W[EJLNPQRSTUWXYZ]|Y[AHPQRSTUWY]|Z[SX])|9)|7|8|9|1|3)|2(?:0|1|2|3|4|5(?:A|B|D|E|H|J|L|N|P|Q|R|X|Y|3(?:A|B|D|E|G|H|J|L|N|P|Q|S[ABDEFGHJLNPQWYZ]|T|U|W|X|Y|Z)|4(?:A[BDEFGHJLNPQRTUW]|B|D|E|H|J|L[EGUW]|N[YZ]|P|Q|R|S|T|U|W|X|Y|Z)|5(?:A|B|D|E|F|G|H|J|L|N|P|Q[ABDEFGHQXYZ]|R[ABEFZ]|S|T|U|W|X|Y|Z)|9)|6)|3|4|5(?:1|2|3(?:A|B|D|E|G|H|J|L|N|P|Q[ABDEFGHQXYZ]|R[ABDEFZ]|S[ABDEFGHJLNPQWZ]|T|U|X|Y|Z)|4(?:A|B|D|E|F|H|J|L[ABDEFG]|N[FGHJLNPQRSTUWXYZ]|P|Q|R|S|T|U|X|Y))|6(?:1|2|3|4|5|6(?:A|B|D|E|H|J|L|N|P|Q|R|S[ABDEFHJLNPQRSTUWXYZ]|T|U|X|Y)|7N[HX])|7(?:0|1|5|6|7|8(?:A|B|D|E|H[ABDEFGLNPRSTUWY]|L|N|P|R|S|T|U|W|Y|Z)|9)|8|9)|S(?:A|Y(?:1(?:3(?:2(?:J[HJNPQRSTUWXYZ]|L[ABDEHJLNPQRSUWX]|PB)|3(?:A[DEFGHJLNPQRSTUWXYZ]|B|D|E|G|H|J[AB]|NZ|P[ABDE]|W[BE])|4RE)|47(?:A[NZ]|HY|J[HTUZ]|L|N[ABD])|97|0(?:0(?:A|B|D|E|G|H|J|L|N|P|W[BDEFG])|7(?:J[EFGHJLNQW]|N[EFSTUXYZ]|P[AGSTUXYZ]|Q)|9(?:B[PW]|HZ|J[GHJLNPRSTUWXYZ]|L[ABDEFGHJLNPQRTW]|PA))|56(?:A[ABDEFGHJLNPQRSTUWZ]|B[AB]|D[HJLNQSTUWXYZ]|E[ABFGHJLNQRSTUWXYZ]|H[ABDEFGHJLNPQRSWXZ]|J|L|N|P|Q|R|S[ABDEFGHQRSTUX]|T[ABDEFGHJLNPQWY]|U[AJLNPR]|W|Y)|6|7|8)|2(?:2(?:5(?:A|B|D|E|H|J|L|N|W[ABPZ])|6(?:A|B|D|E[NPRSTUWXYZ]|F|G|H[AEFLNPRSTUWXYZ]|J[ABDEFGHJLNPQRSTWYZ]|L[ABDEFHJPRST]|N[ABDEFGHJLNPQRSXYZ]|P|Q|R|S|T|U|W[DFG]|X|Y))|56|0|1(?:0|1|7|8(?:A|B|D[ABDEFGHJPQRSTUWXYZ]|E[ABDEFGHJLNQSTUXYZ]|F|G|H|J[ABDEFGHJZ]|L[ADEFGHJLNPQRSTUWXYZ]|N|P|Q|R|S|T|W|X|Z)|9)|3|4)|5(?:0J[JLN]|9(?:A[RSTUWXYZ]|B[ABDEFGHJLNPQSTUW]|EU|FB|GN|LD|SB))|78PS|95J[PW])))/,
|
6
6
|
channel_islands: /^(?:GY|J)/,
|
7
7
|
isle_of_man: /^IM/,
|
8
8
|
northern_ireland: /^BT/
|
data/lib/uk_postcode/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uk_postcode
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Battley
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-03-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -44,6 +44,7 @@ executables: []
|
|
44
44
|
extensions: []
|
45
45
|
extra_rdoc_files: []
|
46
46
|
files:
|
47
|
+
- CHANGES
|
47
48
|
- COPYING.txt
|
48
49
|
- README.md
|
49
50
|
- lib/uk_postcode.rb
|