class Pumi::DataSource::Geocoder
def data
def data @data ||= data_file.read end
def geocoded_results
def geocoded_results @geocoded_results ||= geocoder.geocode_all end
def initialize(data_file:, geocoder:)
def initialize(data_file:, geocoder:) @data_file = data_file @geocoder = geocoder end
def load_data!(output_dir: "data")
def load_data!(output_dir: "data") data.each do |code, attributes| geocoded_result = geocoded_results.find { |r| r.code == code } next if geocoded_result.nil? attributes["geodata"] ||= {} attributes["geodata"]["lat"] = geocoded_result.lat attributes["geodata"]["long"] = geocoded_result.long attributes["geodata"]["bounding_box"] = geocoded_result.bounding_box end write_data!(output_dir) end
def write_data!(data_directory)
def write_data!(data_directory) data_file.write(data, data_directory:) end