Grammalecte  Check-in [bbfed11857]

Overview
Comment:merge trunk
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | mailext
Files: files | file ages | folders
SHA3-256: bbfed118579dc5a84df5a59bb49c8794887586e12e28b08d02eb474d984ad8b3
User & Date: olr on 2020-07-10 08:28:46
Other Links: branch diff | manifest | tags
Context
2020-07-10
11:00
[tb][fx] MailExtension: copy all paragraphs to cmopose window when closing the gc panel Closed-Leaf check-in: 218f25c554 user: olr tags: fx, mailext, tb
08:28
merge trunk check-in: bbfed11857 user: olr tags: mailext
06:40
[fr] faux positifs et ajustements check-in: 168cb0bb82 user: olr tags: fr, trunk
2020-07-09
15:09
[build][tb][fx] merge MailExtension background.js with WebExtension background.js check-in: 80aa853941 user: olr tags: build, fx, mailext, tb
Changes

Modified gc_core/js/lang_core/gc_engine.js from [fd4f80b37d] to [fd075f5592].

820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
            lSugg = (sSugg) ? sSugg.split("|") : [];
        } else if (sSugg == "_") {
            lSugg = [];
        } else {
            lSugg = this._expand(sSugg, nTokenOffset, nLastToken).split("|");
        }
        if (bCaseSvty && lSugg.length > 0 && this.lToken[iFirstToken]["sValue"].slice(0,1).gl_isUpperCase()) {
            lSugg = (this.lToken[iFirstToken]["sValue"].gl_isUpperCase()) ? lSugg.map((s) => s.toUpperCase()) : capitalizeArray(lSugg);
        }
        // Message
        let sMessage = (sMsg.startsWith("=")) ? oEvalFunc[sMsg.slice(1)](this.lToken, nTokenOffset, nLastToken) : this._expand(sMsg, nTokenOffset, nLastToken);
        if (bShowRuleId) {
            sMessage += "  #" + sLineId + " / " + sRuleId;
        }
        //







|







820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
            lSugg = (sSugg) ? sSugg.split("|") : [];
        } else if (sSugg == "_") {
            lSugg = [];
        } else {
            lSugg = this._expand(sSugg, nTokenOffset, nLastToken).split("|");
        }
        if (bCaseSvty && lSugg.length > 0 && this.lToken[iFirstToken]["sValue"].slice(0,1).gl_isUpperCase()) {
            lSugg = (this.sSentence.slice(nStart, nEnd).gl_isUpperCase()) ? lSugg.map((s) => s.toUpperCase()) : capitalizeArray(lSugg);
        }
        // Message
        let sMessage = (sMsg.startsWith("=")) ? oEvalFunc[sMsg.slice(1)](this.lToken, nTokenOffset, nLastToken) : this._expand(sMsg, nTokenOffset, nLastToken);
        if (bShowRuleId) {
            sMessage += "  #" + sLineId + " / " + sRuleId;
        }
        //

Modified gc_core/py/lang_core/gc_engine.py from [73a9be1db8] to [c3ca9ed5e0].

701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
            sSugg = globals()[sSugg[1:]](self.lToken, nTokenOffset, nLastToken)
            lSugg = sSugg.split("|")  if sSugg  else []
        elif sSugg == "_":
            lSugg = []
        else:
            lSugg = self._expand(sSugg, nTokenOffset, nLastToken).split("|")
        if bCaseSvty and lSugg and self.lToken[iFirstToken]["sValue"][0:1].isupper():
            lSugg = list(map(lambda s: s.upper(), lSugg))  if self.lToken[iFirstToken]["sValue"].isupper()  else list(map(lambda s: s[0:1].upper()+s[1:], lSugg))
        # Message
        sMessage = globals()[sMsg[1:]](self.lToken, nTokenOffset, nLastToken)  if sMsg[0:1] == "="  else self._expand(sMsg, nTokenOffset, nLastToken)
        if bShowRuleId:
            sMessage += "  #" + sLineId + " / " + sRuleId
        #
        if _bWriterError:
            return self._createErrorForWriter(nStart, nEnd - nStart, sRuleId, sOption, sMessage, lSugg, sURL)







|







701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
            sSugg = globals()[sSugg[1:]](self.lToken, nTokenOffset, nLastToken)
            lSugg = sSugg.split("|")  if sSugg  else []
        elif sSugg == "_":
            lSugg = []
        else:
            lSugg = self._expand(sSugg, nTokenOffset, nLastToken).split("|")
        if bCaseSvty and lSugg and self.lToken[iFirstToken]["sValue"][0:1].isupper():
            lSugg = list(map(lambda s: s.upper(), lSugg))  if self.sSentence[nStart:nEnd].isupper()  else list(map(lambda s: s[0:1].upper()+s[1:], lSugg))
        # Message
        sMessage = globals()[sMsg[1:]](self.lToken, nTokenOffset, nLastToken)  if sMsg[0:1] == "="  else self._expand(sMsg, nTokenOffset, nLastToken)
        if bShowRuleId:
            sMessage += "  #" + sLineId + " / " + sRuleId
        #
        if _bWriterError:
            return self._createErrorForWriter(nStart, nEnd - nStart, sRuleId, sOption, sMessage, lSugg, sURL)

Modified gc_lang/fr/data/phonet_simil.txt from [b8573a5eb3] to [1cc023960d].

807
808
809
810
811
812
813

814
815
816
817
818
819
820
tache taches tâche tâches tâchent
taf tafs taffe taffes taffent
taie taies tes thé thés tais tait
tain teint teints thym thyms tin tins tint teins
taira tairas terra terras
taire ter terre terres terrent
taise taises taisent thèse thèses

tant temps tends tend taon taons
tante tantes tente tentes tentent
tapir tapirs tapirent
tapis tapit tapît
tare tares tard
tarif tarifs tarife tarifes tarifent
taule taules tôle tôles







>







807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
tache taches tâche tâches tâchent
taf tafs taffe taffes taffent
taie taies tes thé thés tais tait
tain teint teints thym thyms tin tins tint teins
taira tairas terra terras
taire ter terre terres terrent
taise taises taisent thèse thèses
tandis tendis tendit tendît
tant temps tends tend taon taons
tante tantes tente tentes tentent
tapir tapirs tapirent
tapis tapit tapît
tare tares tard
tarif tarifs tarife tarifes tarifent
taule taules tôle tôles

Modified gc_lang/fr/rules.grx from [31dbfe9376] to [244373c7e9].

2115
2116
2117
2118
2119
2120
2121











2122
2123
2124
2125
2126
2127
2128
....
4338
4339
4340
4341
4342
4343
4344

4345
4346
4347
4348
4349
4350
4351
....
8998
8999
9000
9001
9002
9003
9004














9005
9006
9007
9008
9009
9010
9011
.....
11317
11318
11319
11320
11321
11322
11323










11324
11325
11326
11327
11328
11329
11330
.....
11420
11421
11422
11423
11424
11425
11426
11427

11428
11429
11430

11431
11432
11433
11434
11435
11436
11437

11438
11439
11440
11441
11442
11443
11444
.....
15705
15706
15707
15708
15709
15710
15711




15712
15713
15714
15715
15716
15717
15718
.....
16731
16732
16733
16734
16735
16736
16737












16738
16739
16740
16741
16742
16743
16744
16745
16746
16747
16748
16749
16750
16751
.....
16950
16951
16952
16953
16954
16955
16956



16957
16958
16959
16960
16961
16962
16963
.....
21708
21709
21710
21711
21712
21713
21714

21715
21716
21717
21718
21719

21720
21721
21722
21723
21724
21725
21726
.....
22669
22670
22671
22672
22673
22674
22675
22676
22677
22678
22679
22680
22681
22682
22683
.....
22695
22696
22697
22698
22699
22700
22701



22702
22703
22704
22705
22706
22707
22708
.....
26769
26770
26771
26772
26773
26774
26775

26776
26777
26778
26779
26780
26781
26782
26783
.....
28771
28772
28773
28774
28775
28776
28777
















28778
28779
28780
28781
28782
28783
28784
28785
28786
28787
28788
28789

28790
28791
28792




28793
28794
28795
28796
28797
28798
28799
.....
28802
28803
28804
28805
28806
28807
28808


28809
28810
28811
28812
28813
28814
28815
.....
28845
28846
28847
28848
28849
28850
28851
28852
28853
28854
28855
28856
28857
28858
28859
28860
28861
28862
28863
28864
28865
28866
28867
28868
28869
28870
28871
28872
28873
.....
28874
28875
28876
28877
28878
28879
28880
28881
28882
28883
28884
28885
28886
28887
28888
28889
28890
28891
28892
28893
28894
28895
28896
28897
28898
28899
28900
.....
28911
28912
28913
28914
28915
28916
28917
28918
28919
28920
28921
28922
28923
28924
28925
28926
.....
29186
29187
29188
29189
29190
29191
29192



29193
29194
29195
29196
29197
29198
29199


__da_couleurs_invariables__
    *WORD [abricot|acajou|amarante|anthracite|aubergine|brique|caca|café|cannelle|caramel|carmin|carotte|cerise|châtaigne|chocolat|citron|corail|crème|fuchsia|groseille|havane|jonquille|marron|mastic|nacarat|ocre|olive|paille|parme|pastel|pervenche|pie|prune|sable|tabac|vermillon]
        <<- morph(\1, ":(D.*:p|B)") =>> exclude(\2, ":A:e:i")














!!!
!!!
!!! Étiquettes                                                                                    !!
!!!
!!!

................................................................................
TEST: être {{en porte à faux}}
TEST: des tractations {{en sous main}}
TEST: Il ne connaît pas {{grand chose}} à tout ça.
TEST: {{ici bas}}, n’attends rien de bon, à moins que…
TEST: {{jusque là}}, tout va bien
TEST: {{Là bas}}.                                                               ->> Là-bas
TEST: elle viendra, {{n’est ce pas}} ?

TEST: seulement par {{ouï dire}}.
TEST: {{par derrière}} la maison
TEST: Tout ce que nous faisons {{par ci, par là}}.
TEST: {{par dessus}}                                                            ->> par-dessus
TEST: Que vas-tu faire {{vis à vis}} d’eux                                      ->> vis-à-vis


................................................................................

TEST: {{emballait c pesé}}
TEST: {{emballer c’est peser}}
TEST: Tu peux emballer, c’est pesé.
TEST: il faut emballer, c’est pesé
TEST: c’est emballé, c’est pesé.
















# et / est
__conf_et_est1__
    entre  $:M  est  $:M
        <<- /conf/ -3>> et                                  && Entre \2 et \4, il faut la conjonction de coordination “et”…

TEST: entre Patrick {{est}} Marcia, ça ne se passe pas bien.    ->> et
................................................................................
    >fond de [>tain|teints|>thym]
        <<- /conf/ -3>> teint                                       && Confusion. Locution nominale : “fond de teint”.|https://fr.wiktionary.org/wiki/fond_de_teint

TEST: Elle l’a observé par un miroir sans {{teint}}.
TEST: Elle a acheté un nouveau fond de {{tain}}.












__conf_taule_tôle1__
    [>taule] [de|d’|en] [>acier|>alu|>aluminium|>bardage|>cuivre|>étanchéité|>fer|>festonnage|inox|>laiton|>métal|>trapèze|>zinc|>éverite|>fibrociment|>fibro-ciment|>plastique|>polycarbonate|PVC]
        <<- /conf/ -1>> =\1.replace("au", "ô").replace("AU", "Ô")   && Confusion. La taule est la forme argotique pour évoquer la prison, le bordel ou toute forme d’habitation.

TEST: une {{taule}} en acier


................................................................................

TEST: {{Toutes choses égales part ailleurs}}.
TEST: ce serait, toutes choses égales par ailleurs, la meilleure solution possible.


# très / trait
__conf_très_trait__
    [un|le|ce|mon|ton|son|notre|votre|leur]  [trait|traits|trais|traie|traies|traient]  @:A.*:[me]:[si]¬:G  @:N.*:[me]:[si]¬:(?:G|3[sp])

        <<- /conf/ -2>> très            && Confusion possible. Si “\3” est bien l’adjectif de “\4” et que vous voulez que le “\4” est beaucoup “\3”, utilisez l’adverbe “très”.|https://fr.wiktionary.org/wiki/tr%C3%A8s

    [des|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  [trait|traits|trais|traie|traies|traient]  @:A.*:[me]:[pi]¬:G  @:N.*:[me]:[pi]¬:(?:G|3[sp])

        <<- /conf/ -2>> très            && Confusion possible. Si “\3” est bien l’adjectif de “\4” et que vous voulez que les “\4” sont beaucoup “\3”, utilisez l’adverbe “très”.|https://fr.wiktionary.org/wiki/tr%C3%A8s

TEST: un {{trait}} petit homme
TEST: les {{traits}} mauvais choix du patron nous ont conduits à la ruine.
TEST: je ne les trais pas, mais il le faudrait.
TEST: un trait mal dessiné
TEST: je lui lançais un trait bien piquant



# un tant soit peu
__conf_un_tant_soit_peu__
    !! un tant soit peu ¡¡
    [un|1] [temps|>tan|tant] [soi|sois|>soie|soit] [peu|peux|peut]
        <<- /conf/ ->> un tant soit peu                             && Confusion. Écrivez “un tant soit peu”.|https://fr.wiktionary.org/wiki/tant_soit_peu
................................................................................
    [>homme|>femme|>cinéaste|>politicien|>acteur|>auteur|>sculpteur|>compositeur|>musicien|>groupe|>romancier|>peintre|>photographe|>sportif|>philosophe|>intellectuel|>polémiste] à succès
    [>homme|>femme] d’ >affaire à succès
        <<- ~-2:0>> *

    [>bébé|fils|>fille|>enfant|>neveu|>nièce|>frère|>sœur] [de|d’] $:B:e:p [mois|ans]
    [>grand-père|>grand-mère|>père|>mère|>papa|>maman|>oncle|>tante|>frère|>sœur|beau-frère|belle-sœur|>nièce|>neveu|>cousin] [de|d’] $:B:e:p ans
        <<- ~2:0>> *





    >calibre . *NUM ?[acp|auto|brenneke|browning|british|colt|court|H&K|magnum|mauser|otan|remington|parabellum|russian|S&W|sig|soviet|special|wcf|wsm|winchester]¿
    >calibre . *NUM long rifle
    >calibre *NUM ?[mm|in]¿
    >calibre *NUM [*|×] *NUM ?[mm|in]¿
        <<- ~2:0>> *
        <<- =>> =select(\1, ":N")
................................................................................
    >vendre à perte
    >venir à bout
    [>venir|>revenir] je [ne|n’] sais ?pas¿ ?trop¿ d’ où
    [>venir|>revenir] on [ne|n’] sait ?pas¿ ?trop¿ d’ où
        <<- ~2:0>> ␣
        <<- =>> define(\2, ":LV")














__da_participe_passé__
    >avoir  $:Q
        <<- not value(\1, "|avoirs|") and not value(<1, "|de|d’|un|") =>> rewrite(\2, ":A", "")

    >être   $:Q
        <<- not value(\1, "|êtres|") and not value(<1, "|de|d’|un|l’|") =>> rewrite(\2, ":A", "")


__purge_vite__
    vite
        <<- not (morph(<1, ":V0a") and value(>1, "|fait|")) ~>> *


................................................................................
TEST: Ma chambre est trois fois plus grande que la tienne.
TEST: Il est trois ans plus jeune que moi.
TEST: On peut sans doute laisser sans grand problème toutes les baskets à la mode être produites à l’autre bout du monde
TEST: Faire cours avec un bâillon m’indique assez bien l’importance qu’on accorde à ce que je peux bien vouloir dire en classe.
TEST: le rejet de l’État-providence est plus élevé dans les régions où les immigrants se trouvent en plus grand nombre
TEST: les délices nouvelles
TEST: il lui faut composer avec un électorat bête à manger du foin





@@@@
@@@@
@@@@
@@@@
@@@@END_GRAPH                                                                                      _
................................................................................
TEST: elles sont {{vites}} parties.
TEST: elles sont vites.


# voir clair
__sgpl_voir_clair__
    >voir >clair

        <<- /sgpl/ \2 != "clair" and \2 != "Claire" -2>> clair      && Dans la locution “voir clair”, “clair” est un adverbe, donc invariable. (Mais peut-être confondez-vous “voire” et “voir” ?)

TEST: Ils y voient {{clairs}}.
TEST: Il vit Claire au théâtre.
TEST: J’y vois clair, mec.



# vu / vue
__sgpl_vue_vu__
    >point de [vu|vus|vues]
        <<- /sgpl/ -3>> vue                                         && Dans un “point de vue”, “vue” est toujours au féminin singulier.

................................................................................
        -2>> =suggVerbInfi(\2)                                                                      && S’il s’agit d’une action à accomplir, le verbe devrait être à l’infinitif.

    [>adorer|>aimer|>compter|>désirer|>détester|>entendre|>espérer|>préférer|>souhaiter]  ~..(?:ée?s?|ez)$
        <<- /infi/ morph(\1, ":", ":[GN]") and morph(\2, ":V", ":M") and not value(<1, "|le|la|l’|les|")
        -2>> =suggVerbInfi(\2)                                                                      && S’il s’agit d’une action à accomplir, le verbe devrait être à l’infinitif.

    [>aller|>envoyer|>venir|>revenir|>partir]  ~..(?:ée?s?|ez)$
        <<- /infi/ morph(\1, ":", ":[GN]") and morph(\-1, ":V", ":M|>(?:accompagner|armer|armurer|casquer|déguiser)/") and not value(>1, "|par|")
        --1>> =suggVerbInfi(\2)                                                                     && S’il s’agit d’une action à accomplir, le verbe devrait être à l’infinitif.

TEST: elle préférait {{mangée}} seule.                                                  ->> manger
TEST: Il venait, comme d’habitude, {{discuté}} avec son ami.                            ->> discuter
TEST: Ces types-là venaient {{mangé}} chez moi tous les dimanches.                      ->> manger
TEST: ils viennent bien entendu {{attaqué}} le parlement                                ->> attaquer
TEST: ils vont par voie de conséquence vraiment {{attaqué}} la banque                   ->> attaquer
................................................................................
TEST: le dialogue, je l’espère apaisé et cordial.
TEST: Elles étaient venues armées.
TEST: Il vint déguisé en mousquetaire.
TEST: D’ailleurs j’irai armé.
TEST: J’irai armé de mon épée.
TEST: Si possible, venez accompagné.
TEST: Elle vint accompagnée de son père.





__infi_avoir_beau__
    >avoir beau ?[ne|n’|le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿     ~..(?:ée?s?|ez|ai[ts]?)$
    >avoir beau ?[ne|n’]¿   [le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y] ~..(?:ée?s?|ez|ai[ts]?)$
    >avoir beau ?[ne|n’]¿   [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]      ~..(?:ée?s?|ez|ai[ts]?)$
    >avoir beau ?[ne|n’]¿   [le|la|l’|les]                  [lui|leur|en|y]          ~..(?:ée?s?|ez|ai[ts]?)$
................................................................................
TEST: Quel serait leur {{impacte}} sur la population.                               ->> impact
TEST: Quels étaient les {{ennuient}} avec ces gens                                  ->> ennuis
TEST: un homme humble et doux, quel être le deviendrait en de telles circonstances ?


__vmode_l_eût_suj_voulu_que__
    l’ [eut-il|eut-elle|eut-on] [désiré|envisagé|exigé|demandé|imaginé|rêvé|souhaité|voulu] [que|qu’]

        <<- /vmode/ -2>> =\2.replace("ut", "ût").replace("UT", "ÛT")    && Mode verbal. Dans cette locution (comme “l’eût-il voulu que…”), utilisez le subjonctif, car il s’agit d’une spéculation sur ce qui est “\-2”.

TEST: l’{{eut-il}} voulu que ça n’aurait rien changé            ->> eût-il



!!!
!!!
................................................................................
    >douter  [que|qu’]  @:(?:Os|M)  @:I¬:(?:[GYSK]|If)
        <<- /vmode/ not tag(\1, "_upron_") and not tag(\1, "neg") and morph(\1, ":V", ":N")
        --1>> =suggVerbMode(\-1, ":S", \-2)                                                         && Après “\1 que”, ce verbe devrait être au subjonctif.

    [il|ça|cela]  [peut|pouvait]  [que|qu’]  @:(?:Os|M)  @:I¬:[GYS]
        <<- /vmode/ tag(\2, "_upron_") --1>> =suggVerbMode(\-1, ":S", \-2)                          && Après “\1 se peut que”, le verbe devrait être au subjonctif.

















TEST: Il suffit qu’il {{court}} plus
TEST: j’attends que tu {{viens}}.
TEST: Je veux qu’il {{finit}} son repas.
TEST: Je ne veux pas que tu {{es}} des ennuis
TEST: je doute qu’il {{vient}} demain.
TEST: il se peut que nous {{avons}} tort.
TEST: j’ai bon espoir qu’il {{vient}} vite.
TEST: peu s’en est fallu qu’il {{devient}} estropié.
TEST: je m’étonne qu’il {{est}} aussi fragile
TEST: elle a envie qu’il {{est}} intelligent.
TEST: il importera que nous {{devenons}} prêts.
TEST: prends garde que vous {{revenez}} en un seul morceau.

TEST: faites attention à ce qu’elle ne {{devient}} pas timorée.
TEST: je tiens à ce que vous {{devenez}} grands.
TEST: Veille à ce qu’il y {{est}} des gâteaux.




TEST: Je ne doute pas qu’ils réussiront leur mission.
TEST: Je me doutais bien qu’Apple pourrait marcher
TEST: Je me doutais bien qu’elle me détestait
TEST: Je veux que tu sois prudent.
TEST: Je souhaitais que tu fusses présent.
TEST: Je souhaite qu’il apprenne le français.
TEST: Je ne permets pas que tu sois imprudent.
................................................................................
TEST: Je sais bien que tu reviendras.
TEST: Ne doute pas qu’il viendra demain.
TEST: C’est cet interdit qu’il faut lever.
TEST: pas grand-chose à proposer à part faire attention à ce qu’on fait.
TEST: La crainte que nous nourrissons à l’égard d’une société libre tient à notre méconnaissance des vertus de l’action individuelle
TEST: Je sais qu’il nous faut l’aide de mon ami.
TEST: cela tient sans doute à ce qu’ils n’ont pas acquis une connaissance suffisante de la doctrine




__vmode_qqch_que_subjonctif__
    [quoique|quoiqu’]  @:(?:Os|M)  @:I¬:[GYS]
        <<- /vmode/ -3>> =suggVerbMode(\3, ":S", \2)                                                && Après “quoique”, ce verbe devrait être au subjonctif.

    [afin|avant|malgré|pour|pourvu|qui|quoi|sans]   [que|qu’]  @:(?:Os|M)  @:I¬:[GYS]
................................................................................

#    [<start>|,|(]   si          bien                [que|qu’]   @:(?:Os|M)  @:I¬:(?:[GYS]|I[qf]|V0)
#        <<- /vmode/ -6>> =suggVerbMode(\6, ":S", \5)                                                && Après “\2 \3 que”, ce verbe devrait être au subjonctif.

    [<start>|,|(]  encore                           [que|qu’]   @:(?:Os|M)  @:I¬:(?:[GSK]|If)
        <<- /vmode/ -5>> =suggVerbMode(\5, ":S", \4)                                                && Après « \2 que », le verbe s’emploie au subjonctif.

    il          arrive                              [que|qu’]   @:(?:Os|M)  @:I¬:(?:[GSK]|If|V0)
        <<- /vmode/ --1>> =suggVerbMode(\-1, ":S", \-2)                                             && Après “il arrive que”, le verbe se met au subjonctif s’il s’agit d’une éventualité (mais la construction à l’indicatif est aussi possible s’il y a certitude).

    il          est         possible                [que|qu’]   @:(?:Os|M)  @:I¬:[GYS]
    jusqu’      à           ce                      [que|qu’]   @:(?:Os|M)  @:I¬:[GYS]
    si          tant        est                     [que|qu’]   @:(?:Os|M)  @:I¬:[GYS]
        <<- /vmode/ --1>> =suggVerbMode(\-1, ":S", \-2)                                             && Après “\1 \2 \3 que”, ce verbe devrait être au subjonctif.

    peu         [est|était] fallu                   [que|qu’]   @:(?:Os|M)  @:I¬:[GYS]
        <<- /vmode/ tag(\2, "_upron_") --1>> =suggVerbMode(\-1, ":S", \-2)                          && Après “peu s’en est fallu que”, ce verbe devrait être au subjonctif.

    >valoir mieux                                   [que|qu’]   @:(?:Os|M)  @:I¬:[GYS]
    mieux >valoir                                   [que|qu’]   @:(?:Os|M)  @:I¬:[GYS]
        <<- /vmode/  --1>> =suggVerbMode(\-1, ":S", \-2)                                            && Après “mieux valoir que”, ce verbe devrait être au subjonctif.

TEST: Quoiqu’il {{est}} parti il y a longtemps, on pense encore beaucoup à lui.
TEST: quoi qu’il en {{conclut}}
TEST: Avant que tu {{pars}}, je voudrais qu’on discute.
TEST: Sans qu’elle {{prend}} le temps d’analyser le problème.
TEST: il est possible qu’il {{vient}} demain.
TEST: à condition que tu {{réussis}}
TEST: Pourvu qu’elle {{réussit}}.
................................................................................
TEST: en admettant que tu {{deviens}} plus talentueuse qu’elle, qu’est-ce que tu feras ?
TEST: afin que je {{prends}} des mesures
TEST: à condition qu’il {{finit}} son boulot.
TEST: pour peu qu’il {{prend}} son devoir sérieux…
TEST: Fais en sorte qu’elle {{court}} à sa perte
TEST: Nous œuvrons silencieusement de crainte qu’il nous {{entend}}.
TEST: En admettant qu’il {{devient}} juste.
TEST: ça ira, si tant est que Paul {{comprend}} ce qui se passe.
TEST: à condition qu’elle l’{{est}} jamais été
TEST: non qu’il {{prend}} son temps
TEST: si tant est que nous {{prenons}} notre temps
TEST: moyennant qu’elle {{vient}} demain
TEST: en attendant qu’il {{devient}} plus raisonnable
TEST: il arrive qu’il {{vient}}, mais rarement
TEST: {{où}} qu’il {{est}}, on le trouvera
TEST: Il ne le savait pas, bien qu’il en {{avait}} entendu parler.
TEST: Bien que je {{prends}} mon mal en patience.
TEST: encore qu’il {{sait}} s’y prendre
TEST: Vaudrait mieux qu’elle {{meurt}}
TEST: il aurait mieux valu qu’elle {{meurt}}
TEST: C’est un joli bien. Bien qu’il a hérité de son oncle, notez bien.
TEST: Bien qu’il avait donné à ses enfants.
TEST: si bien que je me suis toujours demandée si cela ne m’avait pas un peu bousillé les yeux
TEST: Nul doute qu’elle nourrira à brève échéance la haine de demain à notre égard.
TEST: Tu vivras plus sereinement en admettant que tu ne peux pas être la meilleure en toutes choses.
TEST: quoi que nous autres hommes ayons pu faire
TEST: Nous irons là-bas, si tant est qu’on veuille encore de nous.
................................................................................
TEST: Je vous appelle pour que vous me donniez des renseignements.
TEST: Bien que tu aies passé l’examen
TEST: Je travaille de façon que nous puissions vivre.
TEST: Je travaille de façon qu’il puisse vivre.
TEST: En admettant qu’il soit allé
TEST: Demander jusqu’à ce qu’il réponde.
TEST: Demander jusqu’à ce qu’il me réponde.
TEST: J’irai si tant est que je puisse.
TEST: J’irai si tant est que je le puisse.
TEST: Quoique je dise.
TEST: Quoique je te dise.
TEST: Ça signifie qu’il est parti ou qu’il est mort.
TEST: Ça ne signifie qu’une seule chose : soit qu’il est con, soit qu’il est totalement con.
TEST: Si bien que l’on se dit : « Ce mode de vie où je travaille moins en ayant beaucoup plus de disponibilités sensibles, n’est-ce pas le bon équilibre à trouver ? »


................................................................................
TEST: L’homme est également président de l’AFP
TEST: ils nous ont agenouillés
TEST: C’est pure folie.
TEST: Du côté de ceux sans qui le cinéma se réduirait à pas grand-chose
TEST: Il commence à monter sur scène au Club Méditerranée
TEST: Je n’en avais cure.
TEST: À toute chose malheur est bon.






!!! Tests historiques                                                                             !!

## Version 0.5.14
TEST: par le léger tissu de rayonne qui les protégeait en ce moment.







>
>
>
>
>
>
>
>
>
>
>







 







>







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>







 







>
>
>
>
>
>
>
>
>
>







 







|
>
|

|
>
|






>







 







>
>
>
>







 







>
>
>
>
>
>
>
>
>
>
>
>



|


|







 







>
>
>







 







>
|




>







 







|







 







>
>
>







 







>
|







 







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>












>



>
>
>
>







 







>
>







 







<
<
<
<

<


<
<
<
<
<
<
<







 







<





<




|
<







 







<
<







 







>
>
>







2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
....
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
....
9010
9011
9012
9013
9014
9015
9016
9017
9018
9019
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029
9030
9031
9032
9033
9034
9035
9036
9037
.....
11343
11344
11345
11346
11347
11348
11349
11350
11351
11352
11353
11354
11355
11356
11357
11358
11359
11360
11361
11362
11363
11364
11365
11366
.....
11456
11457
11458
11459
11460
11461
11462
11463
11464
11465
11466
11467
11468
11469
11470
11471
11472
11473
11474
11475
11476
11477
11478
11479
11480
11481
11482
11483
.....
15744
15745
15746
15747
15748
15749
15750
15751
15752
15753
15754
15755
15756
15757
15758
15759
15760
15761
.....
16774
16775
16776
16777
16778
16779
16780
16781
16782
16783
16784
16785
16786
16787
16788
16789
16790
16791
16792
16793
16794
16795
16796
16797
16798
16799
16800
16801
16802
16803
16804
16805
16806
.....
17005
17006
17007
17008
17009
17010
17011
17012
17013
17014
17015
17016
17017
17018
17019
17020
17021
.....
21766
21767
21768
21769
21770
21771
21772
21773
21774
21775
21776
21777
21778
21779
21780
21781
21782
21783
21784
21785
21786
.....
22729
22730
22731
22732
22733
22734
22735
22736
22737
22738
22739
22740
22741
22742
22743
.....
22755
22756
22757
22758
22759
22760
22761
22762
22763
22764
22765
22766
22767
22768
22769
22770
22771
.....
26832
26833
26834
26835
26836
26837
26838
26839
26840
26841
26842
26843
26844
26845
26846
26847
.....
28835
28836
28837
28838
28839
28840
28841
28842
28843
28844
28845
28846
28847
28848
28849
28850
28851
28852
28853
28854
28855
28856
28857
28858
28859
28860
28861
28862
28863
28864
28865
28866
28867
28868
28869
28870
28871
28872
28873
28874
28875
28876
28877
28878
28879
28880
28881
28882
28883
28884
.....
28887
28888
28889
28890
28891
28892
28893
28894
28895
28896
28897
28898
28899
28900
28901
28902
.....
28932
28933
28934
28935
28936
28937
28938




28939

28940
28941







28942
28943
28944
28945
28946
28947
28948
.....
28949
28950
28951
28952
28953
28954
28955

28956
28957
28958
28959
28960

28961
28962
28963
28964
28965

28966
28967
28968
28969
28970
28971
28972
.....
28983
28984
28985
28986
28987
28988
28989


28990
28991
28992
28993
28994
28995
28996
.....
29256
29257
29258
29259
29260
29261
29262
29263
29264
29265
29266
29267
29268
29269
29270
29271
29272


__da_couleurs_invariables__
    *WORD [abricot|acajou|amarante|anthracite|aubergine|brique|caca|café|cannelle|caramel|carmin|carotte|cerise|châtaigne|chocolat|citron|corail|crème|fuchsia|groseille|havane|jonquille|marron|mastic|nacarat|ocre|olive|paille|parme|pastel|pervenche|pie|prune|sable|tabac|vermillon]
        <<- morph(\1, ":(D.*:p|B)") =>> exclude(\2, ":A:e:i")


__da_noms_propres__
    Concorde
        <<- not morph(<1, ":D.*:f") =>> add_morph(\1, ">Concorde/:MP:m:i")

    Mustang
        <<- not morph(<1, ":D.*:m") =>> add_morph(\1, ">Mustang/:MP:f:i")

TEST: le crash du Concorde
TEST: elle a acheté une Mustang



!!!
!!!
!!! Étiquettes                                                                                    !!
!!!
!!!

................................................................................
TEST: être {{en porte à faux}}
TEST: des tractations {{en sous main}}
TEST: Il ne connaît pas {{grand chose}} à tout ça.
TEST: {{ici bas}}, n’attends rien de bon, à moins que…
TEST: {{jusque là}}, tout va bien
TEST: {{Là bas}}.                                                               ->> Là-bas
TEST: elle viendra, {{n’est ce pas}} ?
TEST: {{N’est ce pas}}                                                          ->> N’est-ce pas
TEST: seulement par {{ouï dire}}.
TEST: {{par derrière}} la maison
TEST: Tout ce que nous faisons {{par ci, par là}}.
TEST: {{par dessus}}                                                            ->> par-dessus
TEST: Que vas-tu faire {{vis à vis}} d’eux                                      ->> vis-à-vis


................................................................................

TEST: {{emballait c pesé}}
TEST: {{emballer c’est peser}}
TEST: Tu peux emballer, c’est pesé.
TEST: il faut emballer, c’est pesé
TEST: c’est emballé, c’est pesé.


# entrée / entrer
__conf_entrée__
    [l’|cet|mon|ton|son|notre|votre|leur|chaque|quel] entré
        <<- /conf/ --1>> entrée                                         && Confusion. Écrivez “entrée” pour évoquer l’arrivée ou le passage par lequel on entre.

    [les|des|des|ces|mes|tes|ses|nos|vos|leurs|quels|quelques|plusieurs] entrés
        <<- /conf/ --1>> entrées                                        && Confusion. Écrivez “allers” pour évoquer un voyage. Écrivez “allées” pour évoquer une voie de passage.

TEST: à l’{{entré}} en guerre                               ->> entrée
TEST: Des {{entrés}}                                        ->> entrées
TEST: à l’{{entré}} de la grotte                            ->> entrée
TEST: les entrées sont toutes verrouillées


# et / est
__conf_et_est1__
    entre  $:M  est  $:M
        <<- /conf/ -3>> et                                  && Entre \2 et \4, il faut la conjonction de coordination “et”…

TEST: entre Patrick {{est}} Marcia, ça ne se passe pas bien.    ->> et
................................................................................
    >fond de [>tain|teints|>thym]
        <<- /conf/ -3>> teint                                       && Confusion. Locution nominale : “fond de teint”.|https://fr.wiktionary.org/wiki/fond_de_teint

TEST: Elle l’a observé par un miroir sans {{teint}}.
TEST: Elle a acheté un nouveau fond de {{tain}}.


# tandis que
__conf_tandis_que__
    tendis [que|qu’]
        <<- /conf/ not value(<1, "|je|tu|il|elle|iel|on|ne|n’|le|la|les|l’|me|m’|te|t’|se|s’|")
        ->> tandis \2           && Confusion probable. Écrivez “tandis que” s’il s’agit bien de la locution conjonctive exprimant concomitance ou opposition.|https://fr.wiktionary.org/wiki/tandis_que

TEST: mais {{tendis que}} le policier examinait nos papiers             ->> tandis que


# taule / tôle
__conf_taule_tôle1__
    [>taule] [de|d’|en] [>acier|>alu|>aluminium|>bardage|>cuivre|>étanchéité|>fer|>festonnage|inox|>laiton|>métal|>trapèze|>zinc|>éverite|>fibrociment|>fibro-ciment|>plastique|>polycarbonate|PVC]
        <<- /conf/ -1>> =\1.replace("au", "ô").replace("AU", "Ô")   && Confusion. La taule est la forme argotique pour évoquer la prison, le bordel ou toute forme d’habitation.

TEST: une {{taule}} en acier


................................................................................

TEST: {{Toutes choses égales part ailleurs}}.
TEST: ce serait, toutes choses égales par ailleurs, la meilleure solution possible.


# très / trait
__conf_très_trait__
    [un|le|ce|mon|ton|son|notre|votre|leur]  [trait|traits|trais|traie|traies|traient]  @:A.*:[me]:[si]¬:G  @:N.*:[me]:[si]¬:(?:G|3[sp]|A)
        <<- /conf/ not (morph(\2, ">trait/") and morph(\3, ">(?:facial|vertical|horizontal|oblique|diagonal)/")) -2>> très
        && Confusion possible. Si “\3” est bien l’adjectif de “\4” et que vous voulez que le “\4” est fort “\3”, utilisez l’adverbe “très”.|https://fr.wiktionary.org/wiki/tr%C3%A8s

    [des|les|ces|mes|tes|ses|nos|vos|leurs|quelques|plusieurs]  [trait|traits|trais|traie|traies|traient]  @:A.*:[me]:[pi]¬:G  @:N.*:[me]:[pi]¬:(?:G|3[sp]|A)
        <<- /conf/ not (morph(\2, ">trait/") and morph(\3, ">(?:facial|vertical|horizontal|oblique|diagonal)/")) -2>> très
        && Confusion possible. Si “\3” est bien l’adjectif de “\4” et que vous voulez que les “\4” sont fort “\3”, utilisez l’adverbe “très”.|https://fr.wiktionary.org/wiki/tr%C3%A8s

TEST: un {{trait}} petit homme
TEST: les {{traits}} mauvais choix du patron nous ont conduits à la ruine.
TEST: je ne les trais pas, mais il le faudrait.
TEST: un trait mal dessiné
TEST: je lui lançais un trait bien piquant
TEST: La jeune femme en noir avait des traits faciaux froids et anguleux


# un tant soit peu
__conf_un_tant_soit_peu__
    !! un tant soit peu ¡¡
    [un|1] [temps|>tan|tant] [soi|sois|>soie|soit] [peu|peux|peut]
        <<- /conf/ ->> un tant soit peu                             && Confusion. Écrivez “un tant soit peu”.|https://fr.wiktionary.org/wiki/tant_soit_peu
................................................................................
    [>homme|>femme|>cinéaste|>politicien|>acteur|>auteur|>sculpteur|>compositeur|>musicien|>groupe|>romancier|>peintre|>photographe|>sportif|>philosophe|>intellectuel|>polémiste] à succès
    [>homme|>femme] d’ >affaire à succès
        <<- ~-2:0>> *

    [>bébé|fils|>fille|>enfant|>neveu|>nièce|>frère|>sœur] [de|d’] $:B:e:p [mois|ans]
    [>grand-père|>grand-mère|>père|>mère|>papa|>maman|>oncle|>tante|>frère|>sœur|beau-frère|belle-sœur|>nièce|>neveu|>cousin] [de|d’] $:B:e:p ans
        <<- ~2:0>> *

    [>homme|>femme|>garçon|>garçonnet|>fille|>fillette] d’ un mètre [deux|trois|quatre|cinq|six|sept|huit|neuf|dix|onze|douze|treize|quatorze|quinze|seize|dix-sept|dix-huit|dix-neuf|vingt|vingt-et-un|vingt-deux|vingt-trois|vingt-quatre|vingt-cinq|vingt-six|vingt-sept|vingt-huit|vingt-neuf|trente|trente-et-un|trente-deux|trente-trois|trente-quatre|trente-cinq|trente-six|trente-sept|trente-huit|trente-neuf|quarante|quarante-et-un|quarante-deux|quarante-trois|quarante-quatre|quarante-cinq|quarante-six|quarante-sept|quarante-huit|quarante-neuf|cinquante|cinquante-et-un|cinquante-deux|cinquante-trois|cinquante-quatre|cinquante-cinq|cinquante-six|cinquante-sept|cinquante-huit|cinquante-neuf|soixante|soixante-et-un|soixante-deux|soixante-trois|soixante-quatre|soixante-cinq|soixante-six|soixante-sept|soixante-huit|soixante-neuf|soixante-dix|soixante-et-onze|soixante-douze|soixante-treize|soixante-quatorze|soixante-quinze|soixante-seize|soixante-dix-sept|soixante-dix-huit|soixante-dix-neuf|quatre-vingt-un|quatre-vingt-deux|quatre-vingt-trois|quatre-vingt-quatre|quatre-vingt-cinq|quatre-vingt-six|quatre-vingt-sept|quatre-vingt-huit|quatre-vingt-neufquatre-vingt-dix|quatre-vingt-onze|quatre-vingt-douze|quatre-vingt-treize|quatre-vingt-quatorze|quatre-vingt-quinze|quatre-vingt-seize|quatre-vingt-dix-sept|quatre-vingt-dix-huit|quatre-vingt-dix-neuf]
    [>homme|>femme|>garçon|>garçonnet|>fille|>fillette] [de|d’] deux mètres [deux|trois|quatre|cinq|six|sept|huit|neuf|dix|onze|douze|treize|quatorze|quinze|seize|dix-sept|dix-huit|dix-neuf|vingt|vingt-et-un|vingt-deux|vingt-trois|vingt-quatre|vingt-cinq|vingt-six|vingt-sept|vingt-huit|vingt-neuf|trente|trente-et-un|trente-deux|trente-trois|trente-quatre|trente-cinq|trente-six|trente-sept|trente-huit|trente-neuf|quarante|quarante-et-un|quarante-deux|quarante-trois|quarante-quatre|quarante-cinq|quarante-six|quarante-sept|quarante-huit|quarante-neuf|cinquante|cinquante-et-un|cinquante-deux|cinquante-trois|cinquante-quatre|cinquante-cinq|cinquante-six|cinquante-sept|cinquante-huit|cinquante-neuf|soixante|soixante-et-un|soixante-deux|soixante-trois|soixante-quatre|soixante-cinq|soixante-six|soixante-sept|soixante-huit|soixante-neuf|soixante-dix|soixante-et-onze|soixante-douze|soixante-treize|soixante-quatorze|soixante-quinze|soixante-seize|soixante-dix-sept|soixante-dix-huit|soixante-dix-neuf|quatre-vingt-un|quatre-vingt-deux|quatre-vingt-trois|quatre-vingt-quatre|quatre-vingt-cinq|quatre-vingt-six|quatre-vingt-sept|quatre-vingt-huit|quatre-vingt-neufquatre-vingt-dix|quatre-vingt-onze|quatre-vingt-douze|quatre-vingt-treize|quatre-vingt-quatorze|quatre-vingt-quinze|quatre-vingt-seize|quatre-vingt-dix-sept|quatre-vingt-dix-huit|quatre-vingt-dix-neuf]
        <<- ~2:0>> *

    >calibre . *NUM ?[acp|auto|brenneke|browning|british|colt|court|H&K|magnum|mauser|otan|remington|parabellum|russian|S&W|sig|soviet|special|wcf|wsm|winchester]¿
    >calibre . *NUM long rifle
    >calibre *NUM ?[mm|in]¿
    >calibre *NUM [*|×] *NUM ?[mm|in]¿
        <<- ~2:0>> *
        <<- =>> =select(\1, ":N")
................................................................................
    >vendre à perte
    >venir à bout
    [>venir|>revenir] je [ne|n’] sais ?pas¿ ?trop¿ d’ où
    [>venir|>revenir] on [ne|n’] sait ?pas¿ ?trop¿ d’ où
        <<- ~2:0>> ␣
        <<- =>> define(\2, ":LV")


__passer_temps_adj__
    >passer ?toute¿ [la|cette|ma|ta|sa] [journée|semaine]                       @:A¬:A.*:[fe]:[si]
    >passer ?toute¿ [l’|cette|mon|ton|son] [heure|année]                        @:A¬:A.*:[fe]:[si]
    >passer ?toutes¿ [ces|ses|nos|vos|leurs] [heures|journées|semaines|années]  @:A¬:A.*:[fe]:p
        <<- ~2:-2>> *

TEST: il avait passé toutes ces années enterré dans son appartement
TEST: Il passe toutes ses journées couché.
TEST: Les visiteurs passent donc leurs journées agglutinés…
TEST: il avait passé toute l’heure avachi sur sa chaise.


__da_participe_passé__
    >avoir  $:Q
        <<- not value(\1, "|avoir|avoirs|") and not morph(<1, ":D") =>> rewrite(\2, ":A", "")

    >être   $:Q
        <<- not value(\1, "|être|êtres|") and not morph(<1, ":D") =>> rewrite(\2, ":A", "")


__purge_vite__
    vite
        <<- not (morph(<1, ":V0a") and value(>1, "|fait|")) ~>> *


................................................................................
TEST: Ma chambre est trois fois plus grande que la tienne.
TEST: Il est trois ans plus jeune que moi.
TEST: On peut sans doute laisser sans grand problème toutes les baskets à la mode être produites à l’autre bout du monde
TEST: Faire cours avec un bâillon m’indique assez bien l’importance qu’on accorde à ce que je peux bien vouloir dire en classe.
TEST: le rejet de l’État-providence est plus élevé dans les régions où les immigrants se trouvent en plus grand nombre
TEST: les délices nouvelles
TEST: il lui faut composer avec un électorat bête à manger du foin
TEST: l’homme d’un mètre soixante-dix appelé “général”
TEST: tout mon être tendu vers la victoire
TEST: Pierre et elle n’étaient plus mari et femme


@@@@
@@@@
@@@@
@@@@
@@@@END_GRAPH                                                                                      _
................................................................................
TEST: elles sont {{vites}} parties.
TEST: elles sont vites.


# voir clair
__sgpl_voir_clair__
    >voir >clair
        <<- /sgpl/ \2 != "clair" and \2 != "Claire" and morph(\1, ":(?:[123][sp]|P|Y)")
        -2>> clair      && Dans la locution “voir clair”, “clair” est un adverbe, donc invariable. (Mais peut-être confondez-vous “voire” et “voir” ?)

TEST: Ils y voient {{clairs}}.
TEST: Il vit Claire au théâtre.
TEST: J’y vois clair, mec.
TEST: rendant leur vue peu claire


# vu / vue
__sgpl_vue_vu__
    >point de [vu|vus|vues]
        <<- /sgpl/ -3>> vue                                         && Dans un “point de vue”, “vue” est toujours au féminin singulier.

................................................................................
        -2>> =suggVerbInfi(\2)                                                                      && S’il s’agit d’une action à accomplir, le verbe devrait être à l’infinitif.

    [>adorer|>aimer|>compter|>désirer|>détester|>entendre|>espérer|>préférer|>souhaiter]  ~..(?:ée?s?|ez)$
        <<- /infi/ morph(\1, ":", ":[GN]") and morph(\2, ":V", ":M") and not value(<1, "|le|la|l’|les|")
        -2>> =suggVerbInfi(\2)                                                                      && S’il s’agit d’une action à accomplir, le verbe devrait être à l’infinitif.

    [>aller|>envoyer|>venir|>revenir|>partir]  ~..(?:ée?s?|ez)$
        <<- /infi/ morph(\1, ":", ":[GN]") and morph(\-1, ":V", ":M|>(?:accompagner|armer|armurer|casquer|débrailler|déguiser|épuiser)/") and not value(>1, "|par|")
        --1>> =suggVerbInfi(\2)                                                                     && S’il s’agit d’une action à accomplir, le verbe devrait être à l’infinitif.

TEST: elle préférait {{mangée}} seule.                                                  ->> manger
TEST: Il venait, comme d’habitude, {{discuté}} avec son ami.                            ->> discuter
TEST: Ces types-là venaient {{mangé}} chez moi tous les dimanches.                      ->> manger
TEST: ils viennent bien entendu {{attaqué}} le parlement                                ->> attaquer
TEST: ils vont par voie de conséquence vraiment {{attaqué}} la banque                   ->> attaquer
................................................................................
TEST: le dialogue, je l’espère apaisé et cordial.
TEST: Elles étaient venues armées.
TEST: Il vint déguisé en mousquetaire.
TEST: D’ailleurs j’irai armé.
TEST: J’irai armé de mon épée.
TEST: Si possible, venez accompagné.
TEST: Elle vint accompagnée de son père.
TEST: Ils étaient venus débraillés comme leurs aînés les vaincus.
TEST: Il était venu poussé par la curiosité.



__infi_avoir_beau__
    >avoir beau ?[ne|n’|le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y]¿     ~..(?:ée?s?|ez|ai[ts]?)$
    >avoir beau ?[ne|n’]¿   [le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y] ~..(?:ée?s?|ez|ai[ts]?)$
    >avoir beau ?[ne|n’]¿   [me|m’|te|t’|se|s’|nous|vous]   [le|la|l’|les|en|y]      ~..(?:ée?s?|ez|ai[ts]?)$
    >avoir beau ?[ne|n’]¿   [le|la|l’|les]                  [lui|leur|en|y]          ~..(?:ée?s?|ez|ai[ts]?)$
................................................................................
TEST: Quel serait leur {{impacte}} sur la population.                               ->> impact
TEST: Quels étaient les {{ennuient}} avec ces gens                                  ->> ennuis
TEST: un homme humble et doux, quel être le deviendrait en de telles circonstances ?


__vmode_l_eût_suj_voulu_que__
    l’ [eut-il|eut-elle|eut-on] [désiré|envisagé|exigé|demandé|imaginé|rêvé|souhaité|voulu] [que|qu’]
        <<- /vmode/ -2>> =\2.replace("ut", "ût").replace("UT", "ÛT")
        && Mode verbal. Dans cette locution (comme “l’eût-il voulu que…”), utilisez le subjonctif, car il s’agit d’une spéculation sur ce qui est “\-2”.

TEST: l’{{eut-il}} voulu que ça n’aurait rien changé            ->> eût-il



!!!
!!!
................................................................................
    >douter  [que|qu’]  @:(?:Os|M)  @:I¬:(?:[GYSK]|If)
        <<- /vmode/ not tag(\1, "_upron_") and not tag(\1, "neg") and morph(\1, ":V", ":N")
        --1>> =suggVerbMode(\-1, ":S", \-2)                                                         && Après “\1 que”, ce verbe devrait être au subjonctif.

    [il|ça|cela]  [peut|pouvait]  [que|qu’]  @:(?:Os|M)  @:I¬:[GYS]
        <<- /vmode/ tag(\2, "_upron_") --1>> =suggVerbMode(\-1, ":S", \-2)                          && Après “\1 se peut que”, le verbe devrait être au subjonctif.

    il          [arrive|arriva|arrivait]            [que|qu’]   @:(?:Os|M)  @:I¬:(?:[GSK]|If|V0)
    il          [est|était] arrivé                  [que|qu’]   @:(?:Os|M)  @:I¬:(?:[GSK]|If|V0)
        <<- /vmode/ --1>> =suggVerbMode(\-1, ":S", \-2)
        && Après “il arrive que”, le verbe se met au subjonctif s’il s’agit d’une éventualité (mais la construction à l’indicatif est aussi possible s’il y a certitude).

    il          [est|était] possible                [que|qu’]   @:(?:Os|M)  @:I¬:[GYS]
    si          tant        est                     [que|qu’]   @:(?:Os|M)  @:I¬:[GYS]
        <<- /vmode/ --1>> =suggVerbMode(\-1, ":S", \-2)                                             && Après “\1 \2 \3 que”, ce verbe devrait être au subjonctif.

    peu         [est|était] fallu                   [que|qu’]   @:(?:Os|M)  @:I¬:[GYS]
        <<- /vmode/ tag(\2, "_upron_") --1>> =suggVerbMode(\-1, ":S", \-2)                          && Après “peu s’en est fallu que”, ce verbe devrait être au subjonctif.

    >valoir mieux                                   [que|qu’]   @:(?:Os|M)  @:I¬:[GYS]
    mieux >valoir                                   [que|qu’]   @:(?:Os|M)  @:I¬:[GYS]
        <<- /vmode/  --1>> =suggVerbMode(\-1, ":S", \-2)                                            && Après “mieux valoir que”, ce verbe devrait être au subjonctif.

TEST: Il suffit qu’il {{court}} plus
TEST: j’attends que tu {{viens}}.
TEST: Je veux qu’il {{finit}} son repas.
TEST: Je ne veux pas que tu {{es}} des ennuis
TEST: je doute qu’il {{vient}} demain.
TEST: il se peut que nous {{avons}} tort.
TEST: j’ai bon espoir qu’il {{vient}} vite.
TEST: peu s’en est fallu qu’il {{devient}} estropié.
TEST: je m’étonne qu’il {{est}} aussi fragile
TEST: elle a envie qu’il {{est}} intelligent.
TEST: il importera que nous {{devenons}} prêts.
TEST: prends garde que vous {{revenez}} en un seul morceau.
TEST: ça ira, si tant est que Paul {{comprend}} ce qui se passe.
TEST: faites attention à ce qu’elle ne {{devient}} pas timorée.
TEST: je tiens à ce que vous {{devenez}} grands.
TEST: Veille à ce qu’il y {{est}} des gâteaux.
TEST: il arrive qu’il {{vient}}, mais rarement
TEST: Vaudrait mieux qu’elle {{meurt}}
TEST: il aurait mieux valu qu’elle {{meurt}}
TEST: il est possible qu’il {{est}} parti
TEST: Je ne doute pas qu’ils réussiront leur mission.
TEST: Je me doutais bien qu’Apple pourrait marcher
TEST: Je me doutais bien qu’elle me détestait
TEST: Je veux que tu sois prudent.
TEST: Je souhaitais que tu fusses présent.
TEST: Je souhaite qu’il apprenne le français.
TEST: Je ne permets pas que tu sois imprudent.
................................................................................
TEST: Je sais bien que tu reviendras.
TEST: Ne doute pas qu’il viendra demain.
TEST: C’est cet interdit qu’il faut lever.
TEST: pas grand-chose à proposer à part faire attention à ce qu’on fait.
TEST: La crainte que nous nourrissons à l’égard d’une société libre tient à notre méconnaissance des vertus de l’action individuelle
TEST: Je sais qu’il nous faut l’aide de mon ami.
TEST: cela tient sans doute à ce qu’ils n’ont pas acquis une connaissance suffisante de la doctrine
TEST: J’irai si tant est que je puisse.
TEST: J’irai si tant est que je le puisse.


__vmode_qqch_que_subjonctif__
    [quoique|quoiqu’]  @:(?:Os|M)  @:I¬:[GYS]
        <<- /vmode/ -3>> =suggVerbMode(\3, ":S", \2)                                                && Après “quoique”, ce verbe devrait être au subjonctif.

    [afin|avant|malgré|pour|pourvu|qui|quoi|sans]   [que|qu’]  @:(?:Os|M)  @:I¬:[GYS]
................................................................................

#    [<start>|,|(]   si          bien                [que|qu’]   @:(?:Os|M)  @:I¬:(?:[GYS]|I[qf]|V0)
#        <<- /vmode/ -6>> =suggVerbMode(\6, ":S", \5)                                                && Après “\2 \3 que”, ce verbe devrait être au subjonctif.

    [<start>|,|(]  encore                           [que|qu’]   @:(?:Os|M)  @:I¬:(?:[GSK]|If)
        <<- /vmode/ -5>> =suggVerbMode(\5, ":S", \4)                                                && Après « \2 que », le verbe s’emploie au subjonctif.





    jusqu’      à           ce                      [que|qu’]   @:(?:Os|M)  @:I¬:[GYS]

        <<- /vmode/ --1>> =suggVerbMode(\-1, ":S", \-2)                                             && Après “\1 \2 \3 que”, ce verbe devrait être au subjonctif.








TEST: Quoiqu’il {{est}} parti il y a longtemps, on pense encore beaucoup à lui.
TEST: quoi qu’il en {{conclut}}
TEST: Avant que tu {{pars}}, je voudrais qu’on discute.
TEST: Sans qu’elle {{prend}} le temps d’analyser le problème.
TEST: il est possible qu’il {{vient}} demain.
TEST: à condition que tu {{réussis}}
TEST: Pourvu qu’elle {{réussit}}.
................................................................................
TEST: en admettant que tu {{deviens}} plus talentueuse qu’elle, qu’est-ce que tu feras ?
TEST: afin que je {{prends}} des mesures
TEST: à condition qu’il {{finit}} son boulot.
TEST: pour peu qu’il {{prend}} son devoir sérieux…
TEST: Fais en sorte qu’elle {{court}} à sa perte
TEST: Nous œuvrons silencieusement de crainte qu’il nous {{entend}}.
TEST: En admettant qu’il {{devient}} juste.

TEST: à condition qu’elle l’{{est}} jamais été
TEST: non qu’il {{prend}} son temps
TEST: si tant est que nous {{prenons}} notre temps
TEST: moyennant qu’elle {{vient}} demain
TEST: en attendant qu’il {{devient}} plus raisonnable

TEST: {{où}} qu’il {{est}}, on le trouvera
TEST: Il ne le savait pas, bien qu’il en {{avait}} entendu parler.
TEST: Bien que je {{prends}} mon mal en patience.
TEST: encore qu’il {{sait}} s’y prendre
TEST: jusqu’à ce qu’elle {{vient}} avec nous

TEST: C’est un joli bien. Bien qu’il a hérité de son oncle, notez bien.
TEST: Bien qu’il avait donné à ses enfants.
TEST: si bien que je me suis toujours demandée si cela ne m’avait pas un peu bousillé les yeux
TEST: Nul doute qu’elle nourrira à brève échéance la haine de demain à notre égard.
TEST: Tu vivras plus sereinement en admettant que tu ne peux pas être la meilleure en toutes choses.
TEST: quoi que nous autres hommes ayons pu faire
TEST: Nous irons là-bas, si tant est qu’on veuille encore de nous.
................................................................................
TEST: Je vous appelle pour que vous me donniez des renseignements.
TEST: Bien que tu aies passé l’examen
TEST: Je travaille de façon que nous puissions vivre.
TEST: Je travaille de façon qu’il puisse vivre.
TEST: En admettant qu’il soit allé
TEST: Demander jusqu’à ce qu’il réponde.
TEST: Demander jusqu’à ce qu’il me réponde.


TEST: Quoique je dise.
TEST: Quoique je te dise.
TEST: Ça signifie qu’il est parti ou qu’il est mort.
TEST: Ça ne signifie qu’une seule chose : soit qu’il est con, soit qu’il est totalement con.
TEST: Si bien que l’on se dit : « Ce mode de vie où je travaille moins en ayant beaucoup plus de disponibilités sensibles, n’est-ce pas le bon équilibre à trouver ? »


................................................................................
TEST: L’homme est également président de l’AFP
TEST: ils nous ont agenouillés
TEST: C’est pure folie.
TEST: Du côté de ceux sans qui le cinéma se réduirait à pas grand-chose
TEST: Il commence à monter sur scène au Club Méditerranée
TEST: Je n’en avais cure.
TEST: À toute chose malheur est bon.
TEST: Les 5 outils sont fixés sur le porte-outils.
TEST: Pourquoi s’était-elle laissé emporter ?
TEST: elle s’était laissé emporter



!!! Tests historiques                                                                             !!

## Version 0.5.14
TEST: par le léger tissu de rayonne qui les protégeait en ce moment.

Modified js_extension/string.js from [92604eae87] to [d964129734].

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    String.prototype.gl_isDigit = function () {
        return (this.search(/^[0-9⁰¹²³⁴⁵⁶⁷⁸⁹]+$/) !== -1);
    };
    String.prototype.gl_isAlpha = function () {
        return (this.search(/^[a-zà-öA-Zø-ÿÀ-ÖØ-ßĀ-ʯff-stᴀ-ᶿ]+$/) !== -1);
    };
    String.prototype.gl_isLowerCase = function () {
        return (this.search(/^[a-zà-öø-ÿff-st0-9'’-]+$/) !== -1);
    };
    String.prototype.gl_isUpperCase = function () {
        return (this.search(/^[A-ZÀ-ÖØ-ߌ0-9'’-]+$/) !== -1  &&  this.search(/^[0-9]+$/) === -1);
    };
    String.prototype.gl_isTitle = function () {
        return (this.search(/^[A-ZÀ-ÖØ-ߌ][a-zà-öø-ÿff-st'’-]+$/) !== -1);
    };
    String.prototype.gl_toCapitalize = function () {
        return this.slice(0,1).toUpperCase() + this.slice(1).toLowerCase();
    };
    String.prototype.gl_expand = function (oMatch) {
        let sNew = this;
        for (let i = 0; i < oMatch.length ; i++) {







|


|


|







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    String.prototype.gl_isDigit = function () {
        return (this.search(/^[0-9⁰¹²³⁴⁵⁶⁷⁸⁹]+$/) !== -1);
    };
    String.prototype.gl_isAlpha = function () {
        return (this.search(/^[a-zà-öA-Zø-ÿÀ-ÖØ-ßĀ-ʯff-stᴀ-ᶿ]+$/) !== -1);
    };
    String.prototype.gl_isLowerCase = function () {
        return (this.search(/^[a-zà-öø-ÿff-st0-9 '’-]+$/) !== -1);
    };
    String.prototype.gl_isUpperCase = function () {
        return (this.search(/^[A-ZÀ-ÖØ-ߌ0-9 '’-]+$/) !== -1  &&  this.search(/^[0-9]+$/) === -1);
    };
    String.prototype.gl_isTitle = function () {
        return (this.search(/^[A-ZÀ-ÖØ-ߌ][a-zà-öø-ÿff-st '’-]+$/) !== -1);
    };
    String.prototype.gl_toCapitalize = function () {
        return this.slice(0,1).toUpperCase() + this.slice(1).toLowerCase();
    };
    String.prototype.gl_expand = function (oMatch) {
        let sNew = this;
        for (let i = 0; i < oMatch.length ; i++) {