require "json" require "csv" weapons = JSON.parse File.read("weapons.json") column_names = File.read("column_names").split "\t" csv = CSV.generate do |csv| weapons.keys.each do |weapon_name| 30.times do |i| csv << column_names.map do |column_name| if column_name == 'Hex' i + 1 elsif weapons[weapon_name].include? column_name weapons[weapon_name][column_name] elsif weapons[weapon_name]["Availability"].include? column_name weapons[weapon_name]["Availability"][column_name] else raise "Whoa, weapon '#{weapon_name}' doesn't have column '#{column_name}'" end end end end end puts csv