geo_code.rb
 1# frozen_string_literal: true
 2
 3require "value_semantics/monkey_patched"
 4
 5class GeoCode
 6	def self.for(data)
 7		new(data)
 8	end
 9
10	def initialize(data)
11		@data = data
12	end
13
14	def country
15		return "US" unless @data["postal"]
16		return "US" if @data["postal"] =~ /\A\d+\Z/
17
18		"CA"
19	end
20
21	def sql_point
22		"POINT(#{'%.10f' % @data['longt']} #{'%.10f' % @data['latt']})"
23	end
24
25	def valid?
26		@data["longt"] && @data["latt"]
27	end
28end