postcode 0.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.
data/README ADDED
@@ -0,0 +1,11 @@
1
+ PostCode
2
+
3
+ *Warning:* Very alpha and subject to change.
4
+
5
+ Currently supports looking up UK postcode lat/long using the 'Free The Postcode' database: http://www.freethepostcode.org
6
+
7
+ > postcode = PostCode::UK.lookup("ME19 4YT")
8
+ > postcode.latitude
9
+ => 51.278813
10
+ > postcode.longitude
11
+ => -0.132300
data/Rakefile ADDED
@@ -0,0 +1,30 @@
1
+ require 'spec/rake/spectask'
2
+
3
+ begin
4
+ require 'jeweler'
5
+ Jeweler::Tasks.new do |gem|
6
+ gem.name = "postcode"
7
+ gem.summary = "Library for mapping postcodes to lat/long"
8
+ gem.email = "Stephen Bartholomew"
9
+ gem.homepage = "http://github.com/curve21/post_code"
10
+ gem.description = ""
11
+ gem.authors = ["Stephen Bartholomew"]
12
+ gem.files = FileList["[A-Z]*", "{lib,spec}/**/*"]
13
+ gem.add_dependency("fastercsv")
14
+ end
15
+ rescue LoadError
16
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
17
+ end
18
+
19
+ desc "Update the postcode database"
20
+ namespace :db do
21
+ task :update do
22
+ `curl http://www.freethepostcode.org/currentlist > database/database.txt`
23
+ end
24
+ end
25
+
26
+ Spec::Rake::SpecTask.new(:spec) do |spec|
27
+ spec.libs << 'lib' << 'spec'
28
+ spec.spec_files = FileList['spec/**/*_spec.rb']
29
+ spec.spec_opts = ['--options', 'spec/spec.opts']
30
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,35 @@
1
+ module PostCode
2
+ class UK
3
+ attr_accessor :postcode, :latitude, :longitude
4
+
5
+ def initialize(postcode, latitude, longitude)
6
+ self.postcode = postcode
7
+ self.latitude = latitude
8
+ self.longitude = longitude
9
+ end
10
+
11
+ class << self
12
+ def database=(path)
13
+ @database = FasterCSV.read(path, :col_sep => " ")
14
+ end
15
+
16
+ def database
17
+ if !@database
18
+ self.database = File.dirname(__FILE__) + "/../../databases/database.uk.txt"
19
+ end
20
+
21
+ @database
22
+ end
23
+
24
+ def lookup(postcode)
25
+ postcode.gsub!(/\s+/, "")
26
+
27
+ data = @database.select {|row| row if "#{row[2]}#{row[3]}" == postcode }.first
28
+
29
+ if data.size > 0
30
+ self.new(postcode, data[0], data[1])
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
data/lib/postcode.rb ADDED
@@ -0,0 +1,2 @@
1
+ require "fastercsv"
2
+ require File.dirname(__FILE__) + "/postcode/uk"