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