Class: Jetel::Modules::Iso3166
- Inherits:
-
Module
- Object
- Module
- Jetel::Modules::Iso3166
show all
- Defined in:
- lib/jetel/modules/iso3166/iso3166.rb
Instance Attribute Summary
Attributes inherited from Module
#downloader
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from Module
#download_dir, download_dir, #download_source, downloaded_file, #downloaded_file, extract_dir, #extract_dir, extracted_file, #extracted_file, #initialize, #load, #sources, target_dir, #target_dir, #transform_dir, transform_dir, transformed_file, #transformed_file, #unzip
Class Method Details
.sources ⇒ Object
36
37
38
39
40
41
42
43
|
# File 'lib/jetel/modules/iso3166/iso3166.rb', line 36
def sources
[
{
name: 'iso3166',
url: 'https://en.wikipedia.org/wiki/ISO_3166-1'
}
]
end
|
Instance Method Details
#download(global_options, options, args) ⇒ Object
46
47
48
49
50
|
# 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
|
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/jetel/modules/iso3166/iso3166.rb', line 52
def (global_options, options, args)
self.class.sources.pmap do |source|
downloaded_file = downloaded_file(source, global_options.merge(options))
dest_dir = (source, global_options.merge(options))
puts "Extracting #{downloaded_file}"
FileUtils.mkdir_p(dest_dir)
FileUtils.cp(downloaded_file, dest_dir)
end
end
|
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/jetel/modules/iso3166/iso3166.rb', line 64
def transform(global_options, options, args)
self.class.sources.pmap do |source|
= (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())
rows = page.css('table.wikitable.sortable tr')
= [
'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 => , :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
|