class ZipGeoJp::Record
Attributes
block[R]
city[R]
latitude[R]
longitude[R]
prefecture[R]
zip_code[R]
Public Class Methods
[](key)
click to toggle source
# File lib/zip_geo_jp/record.rb, line 13 def [] (key) row = db.execute('SELECT * FROM zip_codes WHERE zip_code = ? LIMIT 1', key).first row ? from_row(row) : nil end
[]=(key, values)
click to toggle source
# File lib/zip_geo_jp/record.rb, line 18 def []= (key, values) values[:zip_code] = key db.execute( 'REPLACE INTO zip_codes(zip_code, prefecture, city, block, latitude, longitude) VALUES(:zip_code, :prefecture, :city, :block, :latitude, :longitude)', values ) values end
from_row(row)
click to toggle source
# File lib/zip_geo_jp/record.rb, line 31 def from_row(row) new(row.values) end
new(values)
click to toggle source
# File lib/zip_geo_jp/record.rb, line 7 def initialize(values) @zip_code = values.shift.gsub(/^(\d{3})(\d{4})$/, '\1-\2') @prefecture, @city, @block, @latitude, @longitude = values end
reset()
click to toggle source
# File lib/zip_geo_jp/record.rb, line 27 def reset File.delete(file) if File.exists?(file) end
Private Class Methods
db()
click to toggle source
# File lib/zip_geo_jp/record.rb, line 37 def db @@db ||= begin db = SQLite3::Database.new(file) db.results_as_hash = true db.execute(<<_EOF_ CREATE TABLE IF NOT EXISTS zip_codes ( zip_code TEXT NOT NULL PRIMARY KEY, prefecture TEXT NOT NULL, city TEXT NOT NULL, block TEXT, latitude REAL, longitude REAL ) _EOF_ ) db end end
file()
click to toggle source
# File lib/zip_geo_jp/record.rb, line 56 def file File.join(__dir__, '../../data/zip_geo_jp.sqlite3') end