uk_postcode 2.0.0 → 2.1.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 +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
|