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

"""Aufbereitung der Outputliste
"""

import re


class WlList:
	"""bekommt eine Datei mit einer Liste, die enthält: 
		LEMMA (tab) FREQUENZ 
		LEMMA (tab) FREQUENZ
		etc.
	gefolgt von entweder keiner Leerzeile, einer Leerzeile oder zwei Leerzeilen.
	Es handelt sich dabei um die Outputliste, die gegen die IDS-Korpora gelaufen 
	ist.
	Macht aus LEMMA und FREQ eine Liste aus Tupeln unter Beibehaltung der Leerzeilen.
	"""

	def __init__(self, f):
		"""öffnet die Datei. Ruft die privaten Funktionen _prepareList und 
		_cmpList auf.
		"""
		self.rawList = open(f, "r").read().split("\n")
		self.wlList = []
		self._prepareList()
		self._cmpList()
		
	
	def _prepareList(self):
		"""durchläuft die Liste und macht aus jeder Zeile, die keine Leerzeile 
		ist ein Tuple.
		"""
		for lem in self.rawList:
			if lem == "":
				self.wlList.append("")
			else:
				self.wlList.append(tuple(lem.split("\t")))

			
	def _cmpList(self):
		"""vergleicht die InputListe (die gegen das Korpus gelaufen ist) mit der
		OutputListe (die die Häufigkeiten mitverzeichnet). Dadurch, dass
		das Lexikon vereinzelt das Steuerzeichen Null (^@) innerhalb der Lemmata 
		aufweist und diese bei der Verarbeitung der Liste interpretiert werden, 
		erfolgt von dem Null-Charakter bis zum Zeilenende keine Eintragung. Diese 
		Diskrepanzen wird hier ausgeglichen, indem die Zeile der InputListe 
		eingefüt und mit einer Null (für keinen Treffer) versehen wird.
		"""
		oldList = open("../../res/wortlemmaListe/wlInputList.txt", "r").read().split("\n")
		f = open("../../res/teilergebnisse/03listNotEqual.txt", "a")
		i = 0
		for line in self.wlList:
			if re.search(("\x00"), oldList[i]):
				self.wlList[i] = (oldList[i], "0")
				f.write(" outputList: " + oldList[i] + "   " + "inputList: " + "LEER" + "\n")
			i += 1


	def getWlList(self):
		"""gibt die Output-Liste zurück
		"""
		return self.wlList

	