Grammalecte  Diff

Differences From Artifact [7c55bc9b32]:

To Artifact [55e5497434]:


24
25
26
27
28
29
30
31
32


33
34
35
36
37
38
39
24
25
26
27
28
29
30


31
32
33
34
35
36
37
38
39







-
-
+
+








_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 (s):
    return s in _dVerb
def isVerb (sVerb):
    return sVerb in _dVerb


def getConj (sVerb, sTense, sWho):
    "returns conjugation (can be an empty string)"
    if sVerb not in _dVerb:
        return None
    return _modifyStringWithSuffixCode(sVerb, _dPatternConj[sTense][_lTags[_dVerb[sVerb][1]][_dTenseIdx[sTense]]].get(sWho, ""))
238
239
240
241
242
243
244
245

246
247

248
249

250
251

252
253

254
255
256
257



258
259
260
261
262




263
264
265
266
267
268
269
238
239
240
241
242
243
244

245
246

247
248

249
250

251
252

253
254



255
256
257
258




259
260
261
262
263
264
265
266
267
268
269







-
+

-
+

-
+

-
+

-
+

-
-
-
+
+
+

-
-
-
-
+
+
+
+







            if not self._sRawInfo:
                return "verbe inconnu"
            if self._sRawInfo[7:8] == "e":
                self.sVerbAux = "être"
            else:
                self.sVerbAux = "avoir"
            sGroup = _dGroup.get(self._sRawInfo[0], "# erreur ")
            s = ""
            sInfo = ""
            if self._sRawInfo[3:4] == "t":
                s = "transitif"
                sInfo = "transitif"
            elif self._sRawInfo[4:5] == "n":
                s = "transitif indirect"
                sInfo = "transitif indirect"
            elif self._sRawInfo[2:3] == "i":
                s = "intransitif"
                sInfo = "intransitif"
            elif self._sRawInfo[5:6] == "r":
                s = "pronominal réciproque"
                sInfo = "pronominal réciproque"
            elif self._sRawInfo[5:6] == "p":
                s = "pronominal"
            if self._sRawInfo[5:6] == "q" or self._sRawInfo[5:6] == "e":
                s = s + " (+ usage pronominal)"
                sInfo = "pronominal"
            if self._sRawInfo[5:6] in ["q", "u", "v", "e"]:
                sInfo = sInfo + " (+ usage pronominal)"
            if self._sRawInfo[6:7] == "m":
                s = s + " impersonnel"
            if not s:
                s = "# erreur - code : " + self._sRawInfo
            return sGroup + " · " + s
                sInfo = sInfo + " impersonnel"
            if not sInfo:
                sInfo = "# erreur - code : " + self._sRawInfo
            return sGroup + " · " + sInfo
        except:
            traceback.print_exc()
            return "# erreur"

    def infinitif (self, bPro, bNeg, bTpsCo, bInt, bFem):
        try:
            if bTpsCo:
294
295
296
297
298
299
300
301

302
303
304


305
306

307
308
309

310
311

312
313
314

315
316

317
318

319
320
321


322
323
324
325
326
327
328
329
330
331
332
333

334
335
336


337
338

339
340
341

342
343

344
345

346
347
348
349



350
351
352

353
354

355
356

357
358

359
360
361


362
363
364
365
366
367
368
294
295
296
297
298
299
300

301
302


303
304
305

306
307
308

309
310

311
312
313

314
315

316
317

318
319


320
321
322
323
324
325
326
327
328
329
330
331
332

333
334


335
336
337

338
339
340

341
342

343
344

345
346



347
348
349
350
351

352
353

354
355

356
357

358
359


360
361
362
363
364
365
366
367
368







-
+

-
-
+
+

-
+


-
+

-
+


-
+

-
+

-
+

-
-
+
+











-
+

-
-
+
+

-
+


-
+

-
+

-
+

-
-
-
+
+
+


-
+

-
+

-
+

-
+

-
-
+
+







            return "# erreur"

    def participePresent (self, bPro, bNeg, bTpsCo, bInt, bFem):
        try:
            if not self.dConj[":PQ"][":P"]:
                return ""
            if bTpsCo:
                s = _getConjWithTags(self.sVerbAux, self._tTagsAux, ":PQ", ":P")  if not bPro  else  getConj("être", ":PQ", ":P")
                sPartPre = _getConjWithTags(self.sVerbAux, self._tTagsAux, ":PQ", ":P")  if not bPro  else  getConj("être", ":PQ", ":P")
            else:
                s = self.dConj[":PQ"][":P"]
            if not s:
                sPartPre = self.dConj[":PQ"][":P"]
            if not sPartPre:
                return ""
            bEli = True  if _zStartVoy.search(s)  else  False
            bEli = True  if _zStartVoy.search(sPartPre)  else  False
            if bPro:
                if self.bProWithEn:
                    s = "s’en " + s
                    sPartPre = "s’en " + sPartPre
                else:
                    s = "s’" + s  if bEli  else  "se " + s
                    sPartPre = "s’" + sPartPre  if bEli  else  "se " + sPartPre
            if bNeg:
                if bEli and not bPro:
                    s = "n’" + s + " pas"
                    sPartPre = "n’" + sPartPre + " pas"
                else:
                    s = "ne " + s + " pas"
                    sPartPre = "ne " + sPartPre + " pas"
            if bTpsCo:
                s += " " + self._seekPpas(bPro, bFem, self._sRawInfo[5] == "r")
                sPartPre += " " + self._seekPpas(bPro, bFem, self._sRawInfo[5] == "r")
            if bInt:
                s += " … ?"
            return s
                sPartPre += " … ?"
            return sPartPre
        except:
            traceback.print_exc()
            return "# erreur"

    def conjugue (self, sTemps, sWho, bPro, bNeg, bTpsCo, bInt, bFem):
        try:
            if not self.dConj[sTemps][sWho]:
                return ""
            if not bTpsCo and bInt and sWho == ":1s" and self.dConj[sTemps].get(":1ś", False):
                sWho = ":1ś"
            if bTpsCo:
                s = _getConjWithTags(self.sVerbAux, self._tTagsAux, sTemps, sWho)  if not bPro  else  getConj("être", sTemps, sWho)
                sConj = _getConjWithTags(self.sVerbAux, self._tTagsAux, sTemps, sWho)  if not bPro  else  getConj("être", sTemps, sWho)
            else:
                s = self.dConj[sTemps][sWho]
            if not s:
                sConj = self.dConj[sTemps][sWho]
            if not sConj:
                return ""
            bEli = True  if _zStartVoy.search(s)  else  False
            bEli = True  if _zStartVoy.search(sConj)  else  False
            if bPro:
                if not self.bProWithEn:
                    s = _dProObjEl[sWho] + s  if bEli  else _dProObj[sWho] + s
                    sConj = _dProObjEl[sWho] + sConj  if bEli  else _dProObj[sWho] + sConj
                else:
                    s = _dProObjEl[sWho] + "en " + s
                    sConj = _dProObjEl[sWho] + "en " + sConj
            if bNeg:
                s = "n’" + s  if bEli and not bPro  else  "ne " + s
                sConj = "n’" + sConj  if bEli and not bPro  else  "ne " + sConj
            if bInt:
                if sWho == ":3s" and not _zNeedTeuph.search(s):
                    s += "-t"
                s += "-" + self._getPronom(sWho, bFem)
                if sWho == ":3s" and not _zNeedTeuph.search(sConj):
                    sConj += "-t"
                sConj += "-" + self._getPronom(sWho, bFem)
            else:
                if sWho == ":1s" and bEli and not bNeg and not bPro:
                    s = "j’" + s
                    sConj = "j’" + sConj
                else:
                    s = self._getPronom(sWho, bFem) + " " + s
                    sConj = self._getPronom(sWho, bFem) + " " + sConj
            if bNeg:
                s += " pas"
                sConj += " pas"
            if bTpsCo:
                s += " " + self._seekPpas(bPro, bFem, sWho.endswith("p") or self._sRawInfo[5] == "r")
                sConj += " " + self._seekPpas(bPro, bFem, sWho.endswith("p") or self._sRawInfo[5] == "r")
            if bInt:
                s += " … ?"
            return s
                sConj += " … ?"
            return sConj
        except:
            traceback.print_exc()
            return "# erreur"

    def _getPronom (self, sWho, bFem):
        try:
            if sWho == ":3s":
378
379
380
381
382
383
384
385

386
387
388


389
390

391
392
393
394
395

396
397

398
399

400
401

402
403

404
405
406


407
408
409
410
411
412
413
378
379
380
381
382
383
384

385
386


387
388
389

390
391
392
393
394

395
396

397
398

399
400

401
402

403
404


405
406
407
408
409
410
411
412
413







-
+

-
-
+
+

-
+




-
+

-
+

-
+

-
+

-
+

-
-
+
+







            return "# erreur"

    def imperatif (self, sWho, bPro, bNeg, bTpsCo, bFem):
        try:
            if not self.dConj[":E"][sWho]:
                return ""
            if bTpsCo:
                s = _getConjWithTags(self.sVerbAux, self._tTagsAux, ":E", sWho)  if not bPro  else  getConj(u"être", ":E", sWho)
                sImpe = _getConjWithTags(self.sVerbAux, self._tTagsAux, ":E", sWho)  if not bPro  else  getConj(u"être", ":E", sWho)
            else:
                s = self.dConj[":E"][sWho]
            if not s:
                sImpe = self.dConj[":E"][sWho]
            if not sImpe:
                return ""
            bEli = True  if _zStartVoy.search(s)  else  False
            bEli = True  if _zStartVoy.search(sImpe)  else  False
            if bNeg:
                if bPro:
                    if not self.bProWithEn:
                        if bEli and sWho == ":2s":
                            s = "ne t’" + s + " pas"
                            sImpe = "ne t’" + sImpe + " pas"
                        else:
                            s = _dImpeProNeg[sWho] + s + " pas"
                            sImpe = _dImpeProNeg[sWho] + sImpe + " pas"
                    else:
                        s = _dImpeProNegEn[sWho] + s + " pas"
                        sImpe = _dImpeProNegEn[sWho] + sImpe + " pas"
                else:
                    s = "n’" + s + " pas"  if bEli  else  "ne " + s + " pas"
                    sImpe = "n’" + sImpe + " pas"  if bEli  else  "ne " + sImpe + " pas"
            elif bPro:
                s = s + _dImpeProEn[sWho]  if self.bProWithEn  else  s + _dImpePro[sWho]
                sImpe = sImpe + _dImpeProEn[sWho]  if self.bProWithEn  else  sImpe + _dImpePro[sWho]
            if bTpsCo:
                return s + " " + self._seekPpas(bPro, bFem, sWho.endswith("p") or self._sRawInfo[5] == "r")
            return s
                return sImpe + " " + self._seekPpas(bPro, bFem, sWho.endswith("p") or self._sRawInfo[5] == "r")
            return sImpe
        except:
            traceback.print_exc()
            return "# erreur"

    def _seekPpas (self, bPro, bFem, bPlur):
        try:
            if not bPro and self.sVerbAux == "avoir":