# -*- encoding: iso-8859-1 -*-

"""Öffnet das Wörterbuch und liest es in eine Liste. Ruft die Klasse 
Entry01 auf. Übergibt alle Wörterbucheinträge einzeln an die Printfunktion 
zum Drucken.
"""

import re, time, os
import classEntry01



def printTxt(p):
	"""bekommt ein Objekt der Klasse Entry01. Druckt eine neue Wörterbuchversion, 
	deren Einträge im Format vereinheitlicht werden. Die Vereinheitlichung bezieht 
	sich auf Leerzeichen, Klammerung, Kommasetzung, etc. Die Daten bleiben unverändert.
	"""
	f = open("../../res/01WAT.txt", "a")
	f.write("ID: " + p.getIdent() + "\n")
	f.write("WL1: " + p.getWl1() + "\n")
	f.write("WL2: " + p.getWl2() + "\n")
	f.write("IBED: " + p.getIbed() + "\n")
	f.write("RECTYP: " + p.getRectyp() + "\n")
	for zLine in p.getZ():
		f.write((re.search("[A-Z]", zLine[0]).group()) +
			(re.search("[0-9]+",zLine[0])).group() + "\t")
		for s in zLine[1]:
			f.write( s + "\t")
		f.write("\n") 
	for qLine in p.getQ():
		f.write((re.search("[A-Z]", qLine[0]).group()) +
			(re.search("[0-9]+",qLine[0])).group() + "\t")
		sCount = 1
		for s in qLine[1]:
			f.write(s + "\t")
		f.write("\n")
	if p.getUnknown():
		for i in p.getUnknown():
			f.write("UNBEKANNT: " + i + "\n")
	f.write("AUTOR: " + p.getAuthor() + "\n")
	f.write("DATUM: "+ p.getDate() + "\n")
	f.write("\n")
	

def rmOldVersions():
	"""löscht, wenn vorhanden, Dateien, die in diesem Programm neu erstellt werden.
	Da die Dateien im append-Modus geöffnet werden, werden die alten Versionen 
	nicht automatisch überschrieben.
	"""
	if os.path.exists("../../res/01WAT.txt"): 
		os.unlink("../../res/01WAT.txt")
		
	if os.path.exists("../../res/teilergebnisse/01unknown.txt"): 
		os.unlink("../../res/teilergebnisse/01unknown.txt")		


if __name__ == "__main__":
	"""Öffnet das Wörterbuch und liest es in eine Liste. Ruft die Klasse 
	Entry01 auf. Übergibt alle Wörterbucheinträge einzeln an die Printfunktion 
	zum Drucken.
	"""
	time1 =  time.time()
	lexicon = open("../../res/00wdgOrigin.txt")
	rmOldVersions()
	ident = 1
	wholeEntry = []
	line = lexicon.readline()
	while line:
		line = line.strip()
		if re.search("WL1:", line):
			if wholeEntry and wholeEntry[0] is not "":
				wholeEntry.insert(0, ident)
				ident += 1
				p = classEntry01.Entry(wholeEntry)
				printTxt(p)
			wholeEntry = []
		wholeEntry.append(line)
		line = lexicon.readline()
	wholeEntry.insert(0, ident)
	printTxt(p)
	print "Anzahl der Lexikoneinträge: ", ident
	time2 =  time.time()
	print "Laufzeit in Minuten: ", (time2-time1)/60
