Rakefile in airports-0.0.2 vs Rakefile in airports-1.0.0

- old
+ new

@@ -1,6 +1,51 @@ require "bundler/gem_tasks" require "rspec/core/rake_task" +require "csv" +require "json" +require "open-uri" RSpec::Core::RakeTask.new(:spec) + +task :update do + raw_data = open("https://raw.githubusercontent.com/jpatokal/openflights/master/data/airports.dat").read + cleaned_data = raw_data.gsub(/\\"/,'""') + + data = CSV.parse(cleaned_data).each_with_object({}) do |row, accumulator| + # Doha is missing its IATA code, for some reason 🙄 + iata_code = row[5] == "OTBD" ? "DOH" : row[4] + + accumulator[iata_code] = { + name: row[1], + city: row[2], + country: row[3], + iata: iata_code, + icao: row[5], + latitude: row[6], + longitude: row[7], + altitude: row[8], + timezone: row[9], + dst: row[10] + } + end. + tap do |data| + # Hyderabad (HYD) is missing, so add it in + data["HYD"] = { + name: "Rajiv Gandhi International Airport", + city: "Hyderabad", + country: "India", + iata: "HYD", + icao: "VOHS", + latitude: "17.2403", + longitude: "78.4294", + altitude: nil, + timezone: "N", + dst: "5.5", + } + end. + # We aren't interested in airports with no IATA code + reject { |code, _| code.nil? || code == "" } + + File.open("data/airports.json", "w").puts JSON.generate(data) +end task :default => :spec