-
Notifications
You must be signed in to change notification settings - Fork 0
/
antikatastasi.py
111 lines (89 loc) · 4.12 KB
/
antikatastasi.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
from endings import endings_ener, endings_mesi
import re
def ask_verb_info():
verb = input("Verb: ")
tense = input("Tense: ")
eglisi = input("Eglisi")
return verb, tense, eglisi
def get_preverb(verb):
if (verb[-1:] != "ω") and (verb[-4:] != "ομαι"):
return False
if verb[-1:] == "ω":
preverb = verb[:-1]
elif verb[-4:] == "ομαι":
preverb = verb[:-4]
else:
preverb = None
return preverb
def add_afksisi(verb, tense, eglisi):
# Source: https://filologikaek.blogspot.com/2019/02/7.html
symfona = ["β", "γ", "δ", "ζ", "θ", "κ", "λ", "μ", "ν", "ξ", "π", "σ", "τ", "φ", "χ", "ψ"]
fonienta = ["α", "ε", "η", "ι", "ο", "υ", "ω"]
prothesis = ["απο", "αντι", "εκ", "εξ", "προ",
"εν", "εγ", "συν", "εισ", "εσ", "ανα", "δια",
"κατα", "υπερ", "αμφι", "επι", "μετα",
"παρα", "περι", "προσ", "υπο", "ωσ"]
prothesi_regex = re.compile(r'(απο|αντι|εκ|εξ|προ|εν|εγ|συν|εισ|εσ|ανα|δια|κατα|υπερ|αμφι|επι|μετα|παρα|περι|προσ|υπο|ωσ){1}(\w+)')
mo = prothesi_regex.search(verb)
new_verb = verb
if eglisi == "or":
if (tense == "pa") or (tense == "ao"):
try:
prothema = str(mo.group(1))
main_part = str(mo.group(2))
if main_part[0] in symfona:
new_verb = prothema + "ε" + main_part
elif main_part[0] in fonienta:
if main_part[0] == "α":
new_verb = prothema + "η" + main_part[1:]
elif main_part[0] == "ε":
new_verb = prothema + "η" + main_part[1:]
elif main_part[0] == "ο":
new_verb = prothema + "ω" + main_part[1:]
elif main_part[:2] == "αι":
new_verb = prothema + "η" + main_part[1:]
elif main_part[:2] == "ει":
new_verb = prothema + "η" + main_part[1:]
elif main_part[:2] == "αυ":
new_verb = prothema + "ηυ" + main_part[1:]
elif main_part[:2] == "ευ":
new_verb = prothema + "ηυ" + main_part[1:]
elif main_part[:2] == "οι":
new_verb = prothema + "ω" + main_part[1:]
except(AttributeError):
if verb[0] == "ρ":
new_verb = "ε" + "ρ" + verb
elif verb[0] in symfona:
new_verb = "ε" + verb
elif verb[0] in fonienta:
if verb[0] == "α":
new_verb = "η" + verb[1:]
elif verb[0] == "ε":
new_verb = "η" + verb[1:]
elif verb[0] == "ο":
new_verb = "ω" + verb[1:]
elif verb[:2] == "αι":
new_verb = "η" + verb[1:]
elif verb[:2] == "ει":
new_verb = "η" + verb[1:]
elif verb[:2] == "αυ":
new_verb = "ηυ" + verb[1:]
elif verb[:2] == "ευ":
new_verb = "ηυ" + verb[1:]
elif verb[:2] == "οι":
new_verb = "ω" + verb[1:]
return new_verb
def replace(verb, tense, eglisi, prosopo, foni):
new_verb = add_afksisi(verb, tense, eglisi)
if foni == "ener":
for k, v in endings_ener.items():
if k[:2] == tense and k[3]+k[4] == eglisi and k[6]+k[7] == prosopo:
new_verb = new_verb[:-1] + v
break
elif foni == "mesi":
for k, v in endings_mesi.items():
if k[:2] == tense and k[3]+k[4] == eglisi and k[6]+k[7] == prosopo:
new_verb = new_verb[:-1] + v
break
return new_verb
print(replace("αγαπω", "pa", "or", "p3", "ener"))