class Pumi::DataSource::Wikipedia::CambodianDistrictsScraper

def find_geocode_td(district)

def find_geocode_td(district)
  scraper.page.at_xpath("//td[text()[contains(., '#{district.id}')]]")
end

def find_ungegn(district)

def find_ungegn(district)
  geocode_td = find_geocode_td(district)
  return if geocode_td.nil?
  geocode_td.at_xpath("preceding-sibling::td/span[contains(@title, 'Khmer-language romanization')]")&.text
end

def find_url(district)

def find_url(district)
  geocode_td = find_geocode_td(district)
  return if geocode_td.nil?
  link = geocode_td.at_xpath("preceding-sibling::td/a[contains(@href, '/wiki/')]")
  return if link.nil?
  URI.join(URL, link[:href]).to_s
end

def scrape!

def scrape!
  District.all.each_with_object([]) do |district, result|
    result << ScraperResult.new(
      code: district.id,
      wikipedia: find_url(district),
      name_ungegn: find_ungegn(district)
    )
  end
end

def scraper

def scraper
  @scraper ||= WebScraper.new(URL)
end