mlightner-zip_codes 0.5.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.
- data/README +0 -0
 - data/Rakefile +100 -0
 - data/bin/zipfind +23 -0
 - data/data/zip_codes.db +0 -0
 - data/lib/zip_code.rb +41 -0
 - data/test.rb +5 -0
 - data/zip_codes.gemspec +17 -0
 - data/zip_codes.rb +24 -0
 - metadata +77 -0
 
    
        data/README
    ADDED
    
    | 
         
            File without changes
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,100 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rake'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rake/testtask'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'rake/rdoctask'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'sqlite3'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            DIR = File.dirname(__FILE__) + '/data'
         
     | 
| 
      
 8 
     | 
    
         
            +
            system("mkdir -p #{DIR}")
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            desc 'Test the library.'
         
     | 
| 
      
 11 
     | 
    
         
            +
            Rake::TestTask.new(:test) do |t|
         
     | 
| 
      
 12 
     | 
    
         
            +
              t.libs << 'lib'
         
     | 
| 
      
 13 
     | 
    
         
            +
              t.pattern = 'test/**/*_test.rb'
         
     | 
| 
      
 14 
     | 
    
         
            +
              t.verbose = true
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            desc "Update gem files list"
         
     | 
| 
      
 18 
     | 
    
         
            +
            task :gemfiles do
         
     | 
| 
      
 19 
     | 
    
         
            +
              file_name = "zip_codes.gemspec"
         
     | 
| 
      
 20 
     | 
    
         
            +
              files = `find ./ | grep -v \.git`.each_line.collect { |f| f.gsub(/^\.\//, '').strip }.reject { |e| e =~ /^\s*$/ }
         
     | 
| 
      
 21 
     | 
    
         
            +
              file = File.new(file_name)
         
     | 
| 
      
 22 
     | 
    
         
            +
              lines = file.readlines
         
     | 
| 
      
 23 
     | 
    
         
            +
              file.close
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              newf = []
         
     | 
| 
      
 26 
     | 
    
         
            +
              lines.each do |line|
         
     | 
| 
      
 27 
     | 
    
         
            +
                if line =~ /^\s+s\.files\s*\=/
         
     | 
| 
      
 28 
     | 
    
         
            +
                  newf.push "  s.files = [\"#{files.join('","')}\"]\n"
         
     | 
| 
      
 29 
     | 
    
         
            +
                else
         
     | 
| 
      
 30 
     | 
    
         
            +
                  newf.push(line.rstrip + "\n")
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              # Don't write the file if there are no changes
         
     | 
| 
      
 35 
     | 
    
         
            +
              file = File.new(file_name,'w')
         
     | 
| 
      
 36 
     | 
    
         
            +
              newf.each do |line|
         
     | 
| 
      
 37 
     | 
    
         
            +
                file.write(line)
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
              file.close
         
     | 
| 
      
 40 
     | 
    
         
            +
            end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            namespace :zip_codes do
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
              desc "Reloads and refreshes db and data"
         
     | 
| 
      
 45 
     | 
    
         
            +
              task :all => [ :clean, :download, :create_db, :load_data, :index ]
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
              desc 'Downloads the zip code database'
         
     | 
| 
      
 48 
     | 
    
         
            +
              task :download do
         
     | 
| 
      
 49 
     | 
    
         
            +
                require 'open-uri'
         
     | 
| 
      
 50 
     | 
    
         
            +
                chdir("#{DIR}")
         
     | 
| 
      
 51 
     | 
    
         
            +
                system("/usr/bin/env wget http://www.populardata.com/downloads/zip_codes.zip")
         
     | 
| 
      
 52 
     | 
    
         
            +
                system("/usr/bin/env unzip -p zip_codes.zip > zip_codes.csv")
         
     | 
| 
      
 53 
     | 
    
         
            +
                puts "New zip code database downloaded."
         
     | 
| 
      
 54 
     | 
    
         
            +
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              desc 'Creates the test database'
         
     | 
| 
      
 57 
     | 
    
         
            +
              task :create_db do
         
     | 
| 
      
 58 
     | 
    
         
            +
                puts "Creating zip code database..."
         
     | 
| 
      
 59 
     | 
    
         
            +
            	  require 'csv'
         
     | 
| 
      
 60 
     | 
    
         
            +
            	  system("rm -f #{DIR}/zip_codes.db")
         
     | 
| 
      
 61 
     | 
    
         
            +
            	  csv = CSV.open("#{DIR}/zip_codes.csv", "r")
         
     | 
| 
      
 62 
     | 
    
         
            +
            	  db = SQLite3::Database.new( "#{DIR}/zip_codes.db" )
         
     | 
| 
      
 63 
     | 
    
         
            +
            	  db.execute("create table zip_codes (
         
     | 
| 
      
 64 
     | 
    
         
            +
            	    id        INTEGER     NOT NULL PRIMARY KEY,
         
     | 
| 
      
 65 
     | 
    
         
            +
            	    zip       VARCHAR(9)  NOT NULL,
         
     | 
| 
      
 66 
     | 
    
         
            +
            	    zip_class       VARCHAR(9)  ,
         
     | 
| 
      
 67 
     | 
    
         
            +
            	    city      TEXT        ,
         
     | 
| 
      
 68 
     | 
    
         
            +
            	    county      TEXT       ,
         
     | 
| 
      
 69 
     | 
    
         
            +
            	    state     VARCHAR(2)  ,
         
     | 
| 
      
 70 
     | 
    
         
            +
            	    lat       FLOAT       ,
         
     | 
| 
      
 71 
     | 
    
         
            +
            	    long      FLOAT       
         
     | 
| 
      
 72 
     | 
    
         
            +
            	  );")
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
              desc "Loads zip code data"
         
     | 
| 
      
 75 
     | 
    
         
            +
              task :load_data
         
     | 
| 
      
 76 
     | 
    
         
            +
            	  st = db.prepare("insert into zip_codes(zip, lat, long, city, state, county, zip_class) values(?, ?, ?, ?, ?, ?, ?)")
         
     | 
| 
      
 77 
     | 
    
         
            +
            	  csv = CSV.open("#{DIR}/zip_codes.csv", "r")
         
     | 
| 
      
 78 
     | 
    
         
            +
            	  csv.each_with_index do |r,i|
         
     | 
| 
      
 79 
     | 
    
         
            +
            	    puts "Creating zip code #{r[0]} (#{i})"
         
     | 
| 
      
 80 
     | 
    
         
            +
            	    st.execute(*r)
         
     | 
| 
      
 81 
     | 
    
         
            +
            	  end
         
     | 
| 
      
 82 
     | 
    
         
            +
                puts "Database created."
         
     | 
| 
      
 83 
     | 
    
         
            +
              end
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
              desc 'Creates index on zip codes table'
         
     | 
| 
      
 86 
     | 
    
         
            +
              task :index do
         
     | 
| 
      
 87 
     | 
    
         
            +
            	  db = SQLite3::Database.open( "#{DIR}/zip_codes.db" )
         
     | 
| 
      
 88 
     | 
    
         
            +
            	  db.execute("create unique index zip_index on zip_codes (zip);") rescue nil
         
     | 
| 
      
 89 
     | 
    
         
            +
            	  db.execute("create index zip_state_index on zip_coddes (state);") rescue nil
         
     | 
| 
      
 90 
     | 
    
         
            +
              end
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
              desc 'Cleans data dir'
         
     | 
| 
      
 93 
     | 
    
         
            +
              task :clean do
         
     | 
| 
      
 94 
     | 
    
         
            +
            	  File.unlink("#{DIR}/zip_codes.csv") rescue nil
         
     | 
| 
      
 95 
     | 
    
         
            +
            	  File.unlink("#{DIR}/zip_codes.zip") rescue nil    
         
     | 
| 
      
 96 
     | 
    
         
            +
              end
         
     | 
| 
      
 97 
     | 
    
         
            +
            end
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
            task :default => ['zip_codes:all']
         
     | 
    
        data/bin/zipfind
    ADDED
    
    | 
         @@ -0,0 +1,23 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/../zip_codes.rb'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            zip = ARGV[0].strip
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            raise "Syntax: $0 <zip_code>" unless zip
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            if zip !~ /^([\w\-]+)$/
         
     | 
| 
      
 9 
     | 
    
         
            +
              raise "Zip is invalid format"
         
     | 
| 
      
 10 
     | 
    
         
            +
            end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            z = ZipCode.new(zip)
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            if z && z.valid?
         
     | 
| 
      
 15 
     | 
    
         
            +
              puts "Results for zip code: #{zip}:"
         
     | 
| 
      
 16 
     | 
    
         
            +
              ZipCode.columns.each do |c|
         
     | 
| 
      
 17 
     | 
    
         
            +
                next if c == :id
         
     | 
| 
      
 18 
     | 
    
         
            +
                next if c == :zip
         
     | 
| 
      
 19 
     | 
    
         
            +
                puts "  - #{c.to_s}: #{z.record[c.to_sym]}"
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
            else
         
     | 
| 
      
 22 
     | 
    
         
            +
              puts "No match for zip code: #{zip}:"
         
     | 
| 
      
 23 
     | 
    
         
            +
            end
         
     | 
    
        data/data/zip_codes.db
    ADDED
    
    | 
         Binary file 
     | 
    
        data/lib/zip_code.rb
    ADDED
    
    | 
         @@ -0,0 +1,41 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class ZipCode
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
              attr_accessor :record
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              ZIP_COLUMNS.each do |f|
         
     | 
| 
      
 6 
     | 
    
         
            +
                attr_accessor f.to_sym
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              def self.db
         
     | 
| 
      
 10 
     | 
    
         
            +
                raise "No database availablbe.  Please initialize it with Rake." unless ZIP_DB.kind_of?(SQLite3::Database)
         
     | 
| 
      
 11 
     | 
    
         
            +
                ZIP_DB
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              def db
         
     | 
| 
      
 15 
     | 
    
         
            +
                self.class.db
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              def self.columns
         
     | 
| 
      
 19 
     | 
    
         
            +
                ZIP_COLUMNS
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              def columns
         
     | 
| 
      
 23 
     | 
    
         
            +
                self.class.columns
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              def initialize(zipl)
         
     | 
| 
      
 27 
     | 
    
         
            +
                row = db.execute( "select * from zip_codes where zip = '#{zipl.to_s}';" ).first
         
     | 
| 
      
 28 
     | 
    
         
            +
                return nil unless (row.kind_of?(Array) && row[1].to_s == zipl.to_s)
         
     | 
| 
      
 29 
     | 
    
         
            +
                @record = {}
         
     | 
| 
      
 30 
     | 
    
         
            +
                columns.each_with_index do |f,i|
         
     | 
| 
      
 31 
     | 
    
         
            +
                  @record[f.to_sym] = row[i]
         
     | 
| 
      
 32 
     | 
    
         
            +
                  self.instance_variable_set(:"@#{f.to_s}", row[i])
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
                
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
              def valid?
         
     | 
| 
      
 38 
     | 
    
         
            +
                record.kind_of?(Hash) && record.has_key?(:zip)
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            end
         
     | 
    
        data/test.rb
    ADDED
    
    
    
        data/zip_codes.gemspec
    ADDED
    
    | 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Gem::Specification.new do |s|
         
     | 
| 
      
 2 
     | 
    
         
            +
            	s.name = %q{zip_codes}
         
     | 
| 
      
 3 
     | 
    
         
            +
            	s.version = "0.5.0"
         
     | 
| 
      
 4 
     | 
    
         
            +
            	s.author = "Matt Lightner"
         
     | 
| 
      
 5 
     | 
    
         
            +
            	s.default_executable = %q{zip_codes}
         
     | 
| 
      
 6 
     | 
    
         
            +
            	s.description = %q{A library for looking up zip codes and their associated info.}
         
     | 
| 
      
 7 
     | 
    
         
            +
            	s.email = %q{mlightner@gmail.com}
         
     | 
| 
      
 8 
     | 
    
         
            +
            	s.executables = ["zipfind"]
         
     | 
| 
      
 9 
     | 
    
         
            +
              s.files = ["README","bin","bin/zipfind","lib","lib/zip_code.rb","zip_codes.gemspec","data","data/zip_codes.db","Rakefile","zip_codes.rb","test.rb"]
         
     | 
| 
      
 10 
     | 
    
         
            +
            	s.has_rdoc = false
         
     | 
| 
      
 11 
     | 
    
         
            +
            	s.homepage = %q{http://github.com/mlightner/zip_codes}
         
     | 
| 
      
 12 
     | 
    
         
            +
            	s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "zip_codes", "--main"]
         
     | 
| 
      
 13 
     | 
    
         
            +
            	s.require_paths = ["lib"]
         
     | 
| 
      
 14 
     | 
    
         
            +
            	s.summary = %q{A library for looking up zip codes and their associated info.}
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              s.add_dependency(%q<sqlite3>, [">= 0.0.0"])
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
    
        data/zip_codes.rb
    ADDED
    
    | 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'sqlite3'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            DBFILE = File.dirname(__FILE__) + '/data/zip_codes.db'
         
     | 
| 
      
 6 
     | 
    
         
            +
            raise "Please populate the database first" unless File.exist?(DBFILE)
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            begin
         
     | 
| 
      
 9 
     | 
    
         
            +
              ZIP_DB = SQLite3::Database.open( DBFILE )
         
     | 
| 
      
 10 
     | 
    
         
            +
              raise "No database available.  Please initialize it with Rake." unless ZIP_DB.kind_of?(SQLite3::Database)
         
     | 
| 
      
 11 
     | 
    
         
            +
              ZIP_META = ZIP_DB.execute("SELECT * FROM sqlite_master;").first.last.split(/[\r\n\t]+/)
         
     | 
| 
      
 12 
     | 
    
         
            +
              #raise "Can't query DB" unless (ZIP_META.kind_of?(Array) && ZIP_META.include?("zip_codes"))
         
     | 
| 
      
 13 
     | 
    
         
            +
              ZIP_COLUMNS = []
         
     | 
| 
      
 14 
     | 
    
         
            +
              ZIP_META.each do |l|
         
     | 
| 
      
 15 
     | 
    
         
            +
                next unless l =~ /^    ([\S]+)\s+/
         
     | 
| 
      
 16 
     | 
    
         
            +
                ZIP_COLUMNS.push($1.to_sym)
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            rescue Exception => e
         
     | 
| 
      
 19 
     | 
    
         
            +
              puts "There is a problem with your database: #{e.message}"
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            #raise ZIP_META.inspect
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/lib/zip_code.rb'
         
     | 
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,77 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: mlightner-zip_codes
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.5.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Matt Lightner
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2009-05-16 00:00:00 -07:00
         
     | 
| 
      
 13 
     | 
    
         
            +
            default_executable: zip_codes
         
     | 
| 
      
 14 
     | 
    
         
            +
            dependencies: 
         
     | 
| 
      
 15 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 16 
     | 
    
         
            +
              name: sqlite3
         
     | 
| 
      
 17 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 18 
     | 
    
         
            +
              version_requirement: 
         
     | 
| 
      
 19 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 20 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 21 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 22 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 23 
     | 
    
         
            +
                    version: 0.0.0
         
     | 
| 
      
 24 
     | 
    
         
            +
                version: 
         
     | 
| 
      
 25 
     | 
    
         
            +
            description: A library for looking up zip codes and their associated info.
         
     | 
| 
      
 26 
     | 
    
         
            +
            email: mlightner@gmail.com
         
     | 
| 
      
 27 
     | 
    
         
            +
            executables: 
         
     | 
| 
      
 28 
     | 
    
         
            +
            - zipfind
         
     | 
| 
      
 29 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            extra_rdoc_files: []
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 34 
     | 
    
         
            +
            - README
         
     | 
| 
      
 35 
     | 
    
         
            +
            - bin
         
     | 
| 
      
 36 
     | 
    
         
            +
            - bin/zipfind
         
     | 
| 
      
 37 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 38 
     | 
    
         
            +
            - lib/zip_code.rb
         
     | 
| 
      
 39 
     | 
    
         
            +
            - zip_codes.gemspec
         
     | 
| 
      
 40 
     | 
    
         
            +
            - data
         
     | 
| 
      
 41 
     | 
    
         
            +
            - data/zip_codes.db
         
     | 
| 
      
 42 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 43 
     | 
    
         
            +
            - zip_codes.rb
         
     | 
| 
      
 44 
     | 
    
         
            +
            - test.rb
         
     | 
| 
      
 45 
     | 
    
         
            +
            has_rdoc: false
         
     | 
| 
      
 46 
     | 
    
         
            +
            homepage: http://github.com/mlightner/zip_codes
         
     | 
| 
      
 47 
     | 
    
         
            +
            licenses: 
         
     | 
| 
      
 48 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 49 
     | 
    
         
            +
            rdoc_options: 
         
     | 
| 
      
 50 
     | 
    
         
            +
            - --line-numbers
         
     | 
| 
      
 51 
     | 
    
         
            +
            - --inline-source
         
     | 
| 
      
 52 
     | 
    
         
            +
            - --title
         
     | 
| 
      
 53 
     | 
    
         
            +
            - zip_codes
         
     | 
| 
      
 54 
     | 
    
         
            +
            - --main
         
     | 
| 
      
 55 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 56 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 57 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 58 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 59 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 60 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 61 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 62 
     | 
    
         
            +
              version: 
         
     | 
| 
      
 63 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 64 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 65 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 66 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 67 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 68 
     | 
    
         
            +
              version: 
         
     | 
| 
      
 69 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 72 
     | 
    
         
            +
            rubygems_version: 1.3.5
         
     | 
| 
      
 73 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 74 
     | 
    
         
            +
            specification_version: 2
         
     | 
| 
      
 75 
     | 
    
         
            +
            summary: A library for looking up zip codes and their associated info.
         
     | 
| 
      
 76 
     | 
    
         
            +
            test_files: []
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     |