module Cryptopunks::Dataset
Public Class Methods
read( path='./datasets/punks/*.csv' )
click to toggle source
# File lib/cryptopunks/dataset.rb, line 6 def self.read( path='./datasets/punks/*.csv' ) datasets = Dir.glob( path ) #=> ["./datasets/punks/0-999.csv", # "./datasets/punks/1000-1999.csv", # "./datasets/punks/2000-2999.csv", # "./datasets/punks/3000-3999.csv", # "./datasets/punks/4000-4999.csv", # "./datasets/punks/5000-5999.csv", # "./datasets/punks/6000-6999.csv", # "./datasets/punks/7000-7999.csv", # "./datasets/punks/8000-8999.csv", # "./datasets/punks/9000-9999.csv"] rows = [] datasets.each do |dataset| rows += CsvHash.read( dataset ) end # puts " #{rows.size} rows(s)" #=> 10000 rows(s) ### wrap in punk struct for easier access punks = [] rows.each do |row| id = row['id'].to_i type_q = row['type'] count = row['count'].to_i accessories_q = row['accessories'].split( %r{[ ]*/[ ]*} ) if count != accessories_q.size puts "!! ERROR - punk data assertion failed - expected accessories count #{count}; got #{accessories_q.size}" pp row exit 1 end type = Metadata::Type.find( type_q ) if type.nil? puts "!! ERROR - punk data assertion failed - unknown punk type >#{type_q}<" pp row exit 1 end accessories = [] accessories_q.each do |acc_q| acc = Metadata::Accessory.find( acc_q ) if acc.nil? puts "!! ERROR - punk data assertion failed - unknown punk accessory type >#{acc_q}<" pp row exit 1 end accessories << acc end punks << Metadata.new( id, type, accessories ) end punks end