#!/usr/bin/env python
#coding:utf-8

import re
import InitHomeDir
from os import listdir

class Wrapper(object):
	pass

def filter_info(line):
	if "object at 0x" in line:
		return False
	elif " at line " in line:
		return False
	elif " <DownloadThread(" in line:
		return False
	elif "<class '" in line:
		return False
	elif "PyFile " in line:
		return False
	elif " <module '" in line:
		return False
	
	else:
		return True
	
def appendName(lines, name):
	test = re.compile("^[a-zA-z0-9]+ = ")
	
	for i, line in enumerate(lines):
		if test.match(line):
			lines[i] = name+"."+line
			
	return lines

def initReport():
	reports = []
	for f in listdir("."):
		if f.startswith("debug_"):
			reports.append(f)
		
	for i, f in enumerate(reports):
		print "%s. %s" % (i, f)
	
	choice = raw_input("Choose Report: ")
	
	report = reports[int(choice)]
	
	f = open(report, "rb")

	content = f.readlines()
	content = [x.strip() for x in content if x.strip()]
	
	frame = Wrapper()
	plugin = Wrapper()
	pyfile = Wrapper()
	
	frame_c = [] 
	plugin_c = []
	pyfile_c = []
	
	dest = None
	
	for line in  content:
		if line == "FRAMESTACK:":
			dest = frame_c
			continue
		elif line == "PLUGIN OBJECT DUMP:":
			dest = plugin_c
			continue
		elif line == "PYFILE OBJECT DUMP:":
			dest = pyfile_c
			continue
		elif line == "CONFIG:":
			dest = None
	
		if dest is not None:
			dest.append(line)
			
			
	frame_c = filter(filter_info, frame_c)
	plugin_c = filter(filter_info, plugin_c)
	pyfile_c = filter(filter_info, pyfile_c)
	
	frame_c = appendName(frame_c, "frame")
	plugin_c = appendName(plugin_c, "plugin")
	pyfile_c = appendName(pyfile_c, "pyfile")
		
	exec("\n".join(frame_c+plugin_c+pyfile_c) )
	
	return frame, plugin, pyfile
	
if __name__=='__main__':
	print "No main method, use this module with your python shell"