class Jetel::Modules::Iso3166
Public Class Methods
sources()
click to toggle source
# File lib/jetel/modules/iso3166/iso3166.rb, line 36 def sources [ { name: 'iso3166', url: 'https://en.wikipedia.org/wiki/ISO_3166-1' } ] end
Public Instance Methods
download(global_options, options, args)
click to toggle source
# File lib/jetel/modules/iso3166/iso3166.rb, line 46 def download(global_options, options, args) self.class.sources.pmap do |source| download_source(source, global_options.merge(options)) end end
extract(global_options, options, args)
click to toggle source
# File lib/jetel/modules/iso3166/iso3166.rb, line 52 def extract(global_options, options, args) self.class.sources.pmap do |source| downloaded_file = downloaded_file(source, global_options.merge(options)) dest_dir = extract_dir(source, global_options.merge(options)) puts "Extracting #{downloaded_file}" FileUtils.mkdir_p(dest_dir) FileUtils.cp(downloaded_file, dest_dir) end end
transform(global_options, options, args)
click to toggle source
# File lib/jetel/modules/iso3166/iso3166.rb, line 64 def transform(global_options, options, args) self.class.sources.pmap do |source| extracted_file = extracted_file(source, global_options.merge(options)) dest_dir = transform_dir(source, global_options.merge(options)) FileUtils.mkdir_p(dest_dir) puts "Transforming #{extracted_file}" page = Nokogiri::HTML(open(extracted_file)) rows = page.css('table.wikitable.sortable tr') headers = [ 'name', 'alpha2', 'alpha3', 'numeric' ] transformed_file = "#{extracted_file.gsub(extract_dir(source, global_options.merge(options)), dest_dir)}.csv" CSV.open(transformed_file, 'w', :write_headers => true, :headers => headers, :quote_char => '"', :force_quotes => true) do |csv| rows.each do |row| td = row.css('td') next if td.length < 4 name = td[0].css('a').text alpha2 = td[1].text alpha3 = td[2].text numeric = td[3].text csv << [ name, alpha2, alpha3, numeric ] end end end end