#!/usr/bin/env ruby

require 'rubygems'
require 'active_record'

# class defs to link up to table
class Card < ActiveRecord::Base
end

class Edition < ActiveRecord::Base
	has_many :cards	
end

# AR db id and logger
ActiveRecord::Base.logger = Logger.new(STDERR)
ActiveRecord::Base.colorize_logging = true
ActiveRecord::Base.establish_connection(
	:adapter => "sqlite",
	:dbfile  => "cards.db" 
)

# init new card
curcard = Hash.new
setoffset = 0
dupcount = 0
color = ARGV[0].sub(".txt", "")

IO.foreach(ARGV[0]) { |line|
	line.chomp!
	if line.empty?
		# store our current object
		if (!curcard.empty?)
			#puts curcard
			curcard["Color"] = color
			Card.create(curcard).save
			curcard = Hash.new
		end
		next
	end

	fields = line.split(/:/, 2)
	
	curcard["CardName"] = fields[1] if fields[0].include?("CardName")
	curcard["Cost"]= fields[1] if fields[0].include?("Cost")
	curcard["Type"] = fields[1] if fields[0].include?("Type")
	curcard["RulesText"] = fields[1] if fields[0].include?("Rules Text")
	if fields[0].include?("Pow/Tgh")
		pow,tgh = fields[1].split(/\//)
		curcard["Power"] = pow
		curcard["Toughness"] = tgh
	end
	if fields[0].include?("Set/Rarity")
		sets = fields[1].split(/,/)
		dupcount = sets.length if dupcount == 0
		dupcount = dupcount - 1
		curcard["Rarity"] = sets[dupcount].split(/ /)[-1]
		index = sets[dupcount].index(curcard["Rarity"]) - 1
		curcard["edition_id"] = Edition.find_first("name = \"#{sets[dupcount][0..index].strip}\"").id
	end
	
}

