Sha256: 76ce4daa6934b87dc413e746b1d0cee57bf845e83a8390d7e2c1e6db7ac65ba9
Contents?: true
Size: 1.67 KB
Versions: 1
Compression:
Stored size: 1.67 KB
Contents
#!/usr/bin/env rake require "bundler/gem_tasks" task :default => [:spec] begin require 'rspec/core/rake_task' RSpec::Core::RakeTask.new(:spec) do |spec| spec.pattern = 'spec/**/*_spec.rb' spec.rspec_opts = ['-cfs'] end rescue LoadError => e end task :create_zips do require 'csv' require 'jp_prefecture' file_name = 'ken_all_utf8.csv' # download files `wget http://www.post.japanpost.jp/zipcode/dl/kogaki/lzh/ken_all.lzh` `lha x ken_all.lzh` `iconv -f sjis -t utf-8 ken_all.csv > #{file_name}` `rm ken_all.lzh` `rm ken_all.csv` zips = [] # read CSV CSV.foreach(file_name, headers: false){|line| zips << [line[2],line[6]]} # create sorted list of zips -> prefecture_code zips = zips.collect{|zip, prefecture|[zip.to_i, JpPrefecture::Prefecture.find(name: prefecture).code]}.sort{|x,y| x[0]<=>y[0] } # prepare calculation ranged_zips = [] current = [ zips.first[0], zips.first[0], zips.first[1] ] # calculate the zip ranges of each prefecture zips.each do |zip, code| if current[2] == code current[1] = zip else ranged_zips << current current = [zip, zip, code] end end # add last prefecture ranged_zips << current # create prefecture hash prefectures_to_zip = {} ranged_zips.each do |r0, r1, code| prefectures_to_zip[code] ||= [] prefectures_to_zip[code] << [r0,r1] end prefectures_to_zip = Hash[*prefectures_to_zip.sort.flatten(1)] # save result File.open('data/zip.yml', 'w') do |file| file.write "# {:prefecture_code => [[from_zip_1, to_zip_1], [from_zip_2, to_zip_2], ...], ... }\n" file.write prefectures_to_zip.to_yaml end # delete temporary file `rm #{file_name}` end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jp_prefecture-0.5.0 | Rakefile |