1
2
3
4
5
6
7
8
|
1
2
3
4
5
6
7
8
9
10
11
|
+
-
+
+
+
|
"""
# Grammalecte - Conjugueur
Grammalecte - Conjugueur
"""
# License: GPL 3
import re
import traceback
from .conj_data import lVtyp as _lVtyp
from .conj_data import lTags as _lTags
|
︙ | | |
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
+
|
_dGroup = { "0": "auxiliaire", "1": "1ᵉʳ groupe", "2": "2ᵉ groupe", "3": "3ᵉ groupe" }
_dTenseIdx = { ":PQ": 0, ":Ip": 1, ":Iq": 2, ":Is": 3, ":If": 4, ":K": 5, ":Sp": 6, ":Sq": 7, ":E": 8 }
def isVerb (sVerb):
"return True if it’s a existing verb"
return sVerb in _dVerb
def getConj (sVerb, sTense, sWho):
"returns conjugation (can be an empty string)"
if sVerb not in _dVerb:
return None
|
︙ | | |
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
+
-
+
|
"returns raw informations about sVerb"
if sVerb not in _dVerb:
return None
return _lVtyp[_dVerb[sVerb][0]]
def getSimil (sWord, sMorph, bSubst=False):
"returns a set of verbal forms similar to <sWord>, according to <sMorph>"
if ":V" not in sMorph:
return set()
sInfi = sMorph[1:sMorph.find(" ")]
sInfi = sMorph[1:sMorph.find("/")]
aSugg = set()
tTags = _getTags(sInfi)
if tTags:
if not bSubst:
# we suggest conjugated forms
if ":V1" in sMorph:
aSugg.add(sInfi)
|
︙ | | |
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
+
|
# if there is only one past participle (epi inv), unreliable.
if len(aSugg) == 1:
aSugg.clear()
return aSugg
def getConjSimilInfiV1 (sInfi):
"returns verbal forms phonetically similar to infinitive form (for verb in group 1)"
if sInfi not in _dVerb:
return set()
aSugg = set()
tTags = _getTags(sInfi)
if tTags:
aSugg.add(_getConjWithTags(sInfi, tTags, ":Iq", ":2s"))
aSugg.add(_getConjWithTags(sInfi, tTags, ":Iq", ":3s"))
|
︙ | | |
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
-
+
-
+
+
+
|
"returns sWord modified by sSfx"
if not sSfx:
return ""
if sSfx == "0":
return sWord
try:
return sWord[:-(ord(sSfx[0])-48)] + sSfx[1:] if sSfx[0] != '0' else sWord + sSfx[1:] # 48 is the ASCII code for "0"
except:
except (IndexError, TypeError):
return "## erreur, code : " + str(sSfx) + " ##"
class Verb ():
"Verb and its conjugation"
def __init__ (self, sVerb, sVerbPattern=""):
# conjugate a unknown verb with rules from sVerbPattern
if not isinstance(sVerb, str):
raise TypeError("sVerb should be a string")
if not sVerb:
raise ValueError("Empty string.")
|
︙ | | |
|