# deklination_ML.py

import sys

a_endung = ["a","ae","ae","am","a","ae","arum","is","as","is"]
o_endung = ["us","i","o","um","o","i","orum","is","os","is"]
numeri = ["Singular","Plural"]
casus = ["Nom","Gen","Dat","Akk","Abl"]

def formen(klasse,stamm):
    ''' (string,string) -> list of strings'''
    formliste = []
    if klasse == "a":
        for endung in a_endung:
            formliste.append(stamm + endung)
    else:
        for endung in o_endung:
            formliste.append(stamm + endung)
    return formliste

def out_formen(formliste,myfile):
    ''' list of strings -> None'''
    if myfile == "":
        outfile = sys.stdout
    else:
        outfile = open(myfile+".txt","w") 
    for num in numeri:
        print(num,file=outfile)
        for case in casus:
            print(case,":",formliste.pop(0),file=outfile)
    if myfile !="":
        outfile.close()
        print("Die Datei", myfile+".txt","wurde geschrieben.")


print("Dieses Programm ermöglicht es lateinische Formen zu generieren.")
abfrage = "Geben sie ein Wort im Nominativ Singular ein, das sie deklinieren wollen (Enter beendet das Programm): "
wort = input(abfrage)

while wort != "":
    myfile = input('''
    Wenn sie das Ergebnis in eine Datei schreiben wollen,
    geben sie an, wie die Datei heißen soll.
    Wenn Sie das Ergebnis am Bildschirm sehen wollen drücken sie "Enter" 
    ''')
    if wort[-1] == "a":
        out_formen(formen("a",wort[:-1]),myfile)
    elif wort[-2:] == "us":
        out_formen(formen("us",wort[:-2]),myfile)
    else:
        print("Dieses Wort kann nicht dekliniert werden (nur Endungen '-us' und '-a' sind zulässlich")
    wort = input(abfrage)

    
