import os
import re


# Konkordanz als Wörterbuch definieren
konkordanz = {
			# "!t" : "ⷮ",
			# "!s" : "ⷭ",
			# "!c" : "҃", # Titlo
			# "!k" : "ⷦ",
			# "!r" : "ⷬ",
			# "!v" : "ⷡ",
			# "!n" : "ⷩ",
			# "!b" : "ⷠ",
			# "!p" : "ⷫ",
			# "!l" : "ⷧ",
			# "!x" : "ⷯ",
			# "!C" : "ⷱ",
			# "!d" : "ⷣ",
			# "!g" : "ⷢ",

			"*ju": "Ю", #  ju  ju
			"*jE": "Ѩ", #   jE  iotated small jus
			"*jO": "Ѭ", #   jO  iotated big jus
			
			"*jw": "Ѡ", #	Fehler
			
			"ju": "ю", #  ju  ju
			"ju": "ю", #  ju  ju
			"jE": "ѩ", #   jE  iotated small jus
			"jO": "ѭ", #   jO  iotated big jus
			
			"*a": "А", #	a  az
			"*b": "Б", #	b  buky
			"*v": "В", #	v  vede
			"*g": "Г", #	g  glagol
			"*d": "Д", #	d  dobro
			"*e": "Е", #	e  jest
			"*Z": "Ж", #	Z  zhivete
			"*D": "Ѕ", #	D  dzelo
			"*z": "З", #	z  zemlja
			"*I": "І", #	I  i '10' (the decimal i in Cyrillic)			
			"*i": "И", #	i  izhe '20' (transliterated with the octal i in Cyrillic)
			"*J": "Ꙇ", #	J  the broader variant of the latter (Greek iota in Cyrillic)		#A647
			"*G": "Ꙉ", #	G  gerv
			"*k": "К", #	k  kako
			"*l": "Л", #	l  ljudije
			"*m": "М", #	m  myslete
			"*n": "Н", #	n  nash
			"*o": "О", #	o  on
			"*p": "П", #	p  pokoj
			"*r": "Р", #	r  rci
			"*s": "С", #	s  slovo
			"*t": "Т", #	t  tverdo
			"*u": "Ѹ", #	u  uk
			"*f": "Ф", #	f  fert
			"*T": "Ѳ", #	T  theta (fita)
			"*x": "Х", #	x  xer
			"*w": "Ѡ", #	w  ot (omega)
			"*q": "Щ", #	q  shta
			"*c": "Ц", #	c  ci
			"*C": "Ч", #	C  cherv
			"*S": "Ш", #	S  sha
			"*&": "Ъ", #	&  big jer
			"*$": "Ь", #	$  small jer
			"*y": "Ꙑ", #	y  jery (instead of &I)
			"*@": "Ѣ", #	@  jat
			
			"*E": "Ѧ", #	E  small jus
			"*O": "Ѫ", #	O  big jus
			"*U": "Ѵ", #	U  izhica
			"*Y": "Ѹ", #	Y  izhica as the interpolated second part of uk: o[Y]
			
			"a" : "а", #	a  az
			"b" : "б", #	b  buky
			"v" : "в", #	v  vede
			"g" : "г", #	g  glagol
			"d" : "д", #	d  dobro
			"e" : "е", #	e  jest
			"Z" : "ж", #	Z  zhivete
			"D" : "ѕ", #	D  dzelo
			"z" : "з", #	z  zemlja
			"I" : "і", #	I  i '10' (the decimal i in Cyrillic)			
			"i" : "и", #	i  izhe '20' (transliterated with the octal i in Cyrillic)
			"J" : "ꙇ", #	J  the broader variant of the latter (Greek iota in Cyrillic)		#A647
			"G" : "ꙉ", #	G  gerv
			"k" : "к", #	k  kako
			"l" : "л", #	l  ljudije
			"m" : "м", #	m  myslete
			"n" : "н", #	n  nash
			"o" : "о", #	o  on
			"p" : "п", #	p  pokoj
			"r" : "р", #	r  rci
			"s" : "с", #	s  slovo
			"t" : "т", #	t  tverdo
			"u" : "ѹ", #	u  uk
			"f" : "ф", #	f  fert
			"T" : "ѳ", #	T  theta (fita)
			"x" : "х", #	x  xer
			"w" : "ѡ", #	w  ot (omega)
			"q" : "щ", #	q  shta
			"c" : "ц", #	c  ci
			"C" : "ч", #	C  cherv
			"S" : "ш", #	S  sha
			"&" : "ъ", #	&  big jer
			"$" : "ь", #	$  small jer
			"y" : "ꙑ", #	y  jery (instead of &I)
			"@" : "ѣ", #	@  jat
			
			"E" : "ѧ", #	E  small jus
			"O" : "ѫ", #	O  big jus
			"U" : "ѹ", #	U  izhica
			"Y" : "ѹ", #	Y  izhica as the interpolated second part of uk: o[Y]
			"A" : "ꙙ", #	A  "nasal jer" 			

			"!": "҃",	#	!  = before a whole word: the word is under a titlo
			"/": "̄",	#	/ to COMBINING MACRON
			"'": "꙽", #	'  poerok
			"~": "꙼", #	~  breve (arc opening upwards) above the next letter # COMBINING CYRILLIC KAVYKA??
			"^": "҄", #	^  round circumflex (arc opening downwards) above the next letter # COMBINING CYRILLIC PALATALIZATION??
			"(": "҆", #	(  spiritus asper (dasia) above the next letter
            
}

# Funktion, um Muster in einem Token mit regulären Ausdrücken zu ersetzen
def ersetze_mit_regex(token):
    token = re.sub(r'^!(.)', verschiebe_ausrufezeichen, token)
    token = re.sub(r'\*\(', r'(*', token)
    token = re.sub(r'(\/\/)([a-zA-Z])', r'\2\1', token)    
    token = re.sub(r'(\/)([a-zA-Z])', r'\2\1', token)
    return token

# Funktion, um die Zeichen zu vertauschen
def verschiebe_ausrufezeichen(match):
    return match.group(1) + "!"
  
# Funktion zum Ersetzen der Zeichen
def ersetze_zeichen(token, konkordanz):
    for original, ersatz in konkordanz.items():
        token = token.replace(original, ersatz)
    return token


  
# Pfad zum Quellverzeichnis
source_directory = 'F:\\Schulung_Python\\examples\\txt-raw-assem'

# Pfad zum Zielverzeichnis
target_directory = 'F:\\Schulung_Python\\examples\\txt-transl-assem'

# Stellen Sie sicher, dass das Zielverzeichnis existiert
if not os.path.exists(target_directory):
    os.makedirs(target_directory)


# Dateien im Quellverzeichnis verarbeiten
for file_name in os.listdir(source_directory):
    source_path = os.path.join(source_directory, file_name)
    target_path = os.path.join(target_directory, file_name)

    # Datei öffnen und bearbeiten
    with open(source_path, 'r') as file:
        bearbeiteter_inhalt = []
        for line in file:
            tokens = line.split()
            bearbeitete_tokens = [ersetze_zeichen(ersetze_mit_regex(token), konkordanz) for token in tokens]
            bearbeitete_zeile = ' '.join(bearbeitete_tokens)
            bearbeiteter_inhalt.append(bearbeitete_zeile)

    # Bearbeiteten Inhalt in der Zieldatei speichern
    with open(target_path, 'w') as file:
        for zeile in bearbeiteter_inhalt:
            file.write(zeile + '\n')
