class Kickme::CSVCombiner
Public Class Methods
combine()
click to toggle source
# File lib/kickme/csv_combiner.rb, line 4 def self.combine config = Kickme.config country_names = config["countries"].keys fields = config["fields"] CSV.open("#{Kickme.root}/csv/all.csv", "w") do |csv| csv << fields end country_names.each do |country_name| country = config["countries"][country_name] country["leagues"].each do |league| cleaned_league = league.gsub(' ', '_').downcase files = Dir.glob("#{Kickme.root}/csv/#{country_name}/#{cleaned_league}/*") files.each do |file| season = File.basename(file, ".csv") lines = SmarterCSV.process(file, keep_original_headers: true, force_utf8: true) lines.each_with_index do |line, index| new_line = {} fields.each do |field| if field == "League" new_line[field] = cleaned_league elsif field == "Country" new_line[field] = country_name elsif field == "Season" new_line[field] = season else new_line[field] = line[field] end end lines[index] = new_line end CSV.open("#{Kickme.root}/csv/all.csv", "a+") do |csv| lines.each do |line| csv << line.values end end end end end end