Comment: | merge trunk |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | comdic |
Files: | files | file ages | folders |
SHA3-256: |
8ca82c9a7e77f0e76e1663de06364a73 |
User & Date: | olr on 2019-03-15 14:00:47 |
Other Links: | branch diff | manifest | tags |
2019-03-15
| ||
14:08 | [fx] fix merge Closed-Leaf check-in: e8375db0be user: olr tags: fx, comdic | |
14:00 | merge trunk check-in: 8ca82c9a7e user: olr tags: comdic | |
12:54 | [fr] faux positif check-in: 220c5d2bfc user: olr tags: trunk, fr | |
2019-02-25
| ||
12:11 | [fx] init: observePage, set this check-in: a7c123cfd6 user: olr tags: fx, comdic | |
Modified doc/build.md from [a9bb1bbf94] to [783266048e].
1 2 3 4 5 6 7 8 9 | 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 | + - - + - | # How to build Grammalecte ## Required ## * Python 3.6 * Firefox Developper * Firefox Nightly * NodeJS * npm |
︙ | |||
50 51 52 53 54 55 56 | 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | - - + + - - + + | `-i --install` > Install the LibreOffice extension. `-fx --firefox` |
︙ |
Modified doc/syntax.txt from [223b361257] to [f728cc54d9].
1 2 | 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 | - + - + + + + + + - + - - - + + + + + + + + + + + + + + + + + + + - + + - - + + + + + + + + + + + + + + + + - + - + + | WRITING RULES FOR GRAMMALECTE |
︙ | |||
137 138 139 140 141 142 143 | 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 | - + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + | Examples: __<s>__ pattern <<- condition ->> replacement # message <<- condition ->> suggestion # message |
︙ | |||
298 299 300 301 302 303 304 305 306 307 | 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 369 370 371 372 373 374 375 376 377 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 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - - + + - + - - - - - + - | Mr(. [A-Z]\w+) <<- ~1>> * You can also call Python expressions. __[s]__ Mr. ([a-z]\w+) <<- ~1>> =\1.upper() # Text preprocessing and multi-passes checking # On each pass, Lightproof uses rules written in the text preprocessor to modify internally the text before checking the text. The text preprocessor is useful to simplify texts and write simplier checking rules. For example, sentences with the same grammar mistake: These “cats” are black. These cats are “black”. These cats are absolutely black. These stupid “cats” are all black. These unknown cats are as per usual black. Instead of writting complex rules or several rules to find mistakes for all possible cases, you can use the text preprocessor to simplify the text. To remove the chars “”, write: [“”] ->> * The * means: replace text by whitespaces. Similarly to grammar rules, you can add conditions: \w+ly <<- morph(\0, "adverb") ->> * You can also remove a group reference: these (\w+) (\w+) <<- morph(\1, "adjective") and morph(\2, "noun") -1>> * (am|are|is|were|was) (all) <<- -2>> * With these rules, you get the following sentences: These cats are black. These cats are black . These cats are black. These cats are black. These cats are black. These grammar mistakes can be detected with one simple rule: these +(\w+) +are +(\w+s) <<- morph(\1, "noun") and morph(\2, "plural") -2>> _ # Adjectives are invariable. Instead of replacing text with whitespaces, you can replace text with @. https?://\S+ ->> @ This is useful if at first pass you write rules to check successive whitespaces. @ are automatically removed at the second pass. You can also replace any text as you wish. Mister <<- ->> Mr (Mrs?)[.] <<- ->> \1 # Disambiguation # |
︙ | |||
387 388 389 390 391 392 393 | 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 | - + - - + + - + - - - + + + + - + - + - + - - - + - + - - + - - + - - - + + + - - + - - - - - - + - - - + - - - + - - - + - - - + - - - + - - - + + + - - - - + - - - - + - - - + - - - - + - - - - + + - - - - - + + + - - - - + - - + - - + - | > checks if the text before the pattern matches the regex. `textarea(regex[, neg_regex])` > checks if the full text of the checked area (paragraph or sentence) matches the regex. |
Modified gc_lang/fr/data/phonet_simil.txt from [ca29dea7ac] to [5777b23ae3].
︙ | |||
196 197 198 199 200 201 202 203 204 205 206 207 208 209 | 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 | + | convaincs convainc convins convint convaincant convaincants convainquant convergeant convergent convergents convoi convois convoie convoies convoient cool cools coule coules coulent coq coqs coque coques coke cokes cor cors corps cornée cornées corner cornet cornets coron corons corromps corrompt corset corsets corser corsé cote cotes cotent côte côtes cotte cottes côté côtés coter cou cous coût coûts cout couts coup coups coud couds coucher couchers coule coules coulent cool |
︙ | |||
513 514 515 516 517 518 519 520 521 522 523 524 525 526 | 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 | + | mu mus mû mue mues muent nais nait nez né née navigant navigants naviguant nécessité nécessités nécessiter négligeant négligent négligents ni nid nids nie nies nient niais niait niaient nichée nichées nicher nichet nichets nô nos noix noie noies noient noua nouas nom noms non nome nomes nomme nommes nomment notre nôtre nôtres nourrice nourrices nourrisse nourrisses nourrissent nous noue noues nouent |
︙ |
Modified gc_lang/fr/modules-js/gce_suggestions.js from [50cd88bd49] to [152a95fd16].
︙ | |||
39 40 41 42 43 44 45 | 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | - + - + | for (let sStem of _oSpellChecker.getLemma(sFlex)) { let tTags = conj._getTags(sStem); if (tTags) { // we get the tense let aTense = new Set(); for (let sMorph of _oSpellChecker.getMorph(sFlex)) { let m; |
︙ |
Modified gc_lang/fr/modules/gce_suggestions.py from [6e6f6db1f6] to [4e59fa697e].
︙ | |||
26 27 28 29 30 31 32 | 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | - + - + | aSugg = set() for sStem in _oSpellChecker.getLemma(sFlex): tTags = conj._getTags(sStem) if tTags: # we get the tense aTense = set() for sMorph in _oSpellChecker.getMorph(sFlex): |
︙ |
Modified gc_lang/fr/rules.grx from [99443fada4] to [68c3edb10f].
︙ | |||
737 738 739 740 741 742 743 | 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 | - + | !! !! !!!! Ponctuation de fin de paragraphe !! !! !! |
︙ | |||
764 765 766 767 768 769 770 | 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 | - + + | # Si « car » est la conjonction de coordination, une virgule est peut-être souhaitable.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=3447 __[i>/virg(virgule_manquante_avant_mais)__ ({w_1})( mais)(?= (?:j[e’]|tu|ils?|nous|vous|elles?|on)\b) @@0,$ <<- not morph(\1, ">(?:[mtscl]es|[nv]os|quels)/") -2>> , mais # Si « mais » est la conjonction de coordination, une virgule est souhaitable si elle introduit une nouvelle proposition.|http://bdl.oqlf.gouv.qc.ca/bdl/gabarit_bdl.asp?id=3445 __[i>/virg(virgule_manquante_avant_donc)__ ({w_1})( donc)(?= (?:j[e’]|tu|ils?|elles?|on)\b) @@0,$ |
︙ | |||
1837 1838 1839 1840 1841 1842 1843 | 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 | - + - + + + + + + + | l’ [un|une] *WORD <<- not value(\3, "|plus|") =>> select(\3, ":[123][sp]") [des|chaque|quelque|quelques|cet|cette|ces|mon|ma|ta|sa|mes|tes|ses|au|aux|notre|votre|nos|vos|leurs|aucun|aucune] *WORD <<- =>> exclude(\2, ":V") [un|une] *WORD |
︙ | |||
2015 2016 2017 2018 2019 2020 2021 | 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 | - + + | TEST: {{attaquant-ils}} ->> attaquent-ils TEST: {{prendrons-elles}} un verre avec moi ? __inte_verbes_composés_interrogatifs_impératifs__ ~\w-[nN]ous$ <<- /inte/ morphVC(\1, ":V", ":(?:1p|E:2[sp])") ->> =suggVerb(\1, ":1p", None, True) # Forme interrogative ou impérative incorrecte. |
︙ | |||
2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 | 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 | + + + + | notre père <<- morph(<1, ":D.*:[mp]") ~>> ␣ <<- __also__ =>> define(\1, [":N:m:i"]) __immunités__ il y a il n’ y a <<- %-1>> à l’ arrache <<- %3>> à ce point en tout point <<- %3>> |
︙ | |||
3207 3208 3209 3210 3211 3212 3213 | 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 | - + + + + + | TEST: des {{franco américains}} TEST: {{franco américaine}} ->> franco-américaine TEST: l’{{israélo belge}} __tu_préfixe_xxxo__ |
︙ | |||
3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 | 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 | + + + + + + + | quelques [un|uns|une|unes] <<- /tu/ ->> quelques-\2 # Il manque un trait d’union. [plus|moins] [value|values] <<- /tu/ ->> \1-\2 # Il manque un trait d’union. ras le bol <<- /tu/ morph(<1, ":D") ->> ras-le-bol # Il manque des traits d’union. ras-le bol ras le-bol <<- /tu/ ->> ras-le-bol # Il manque un trait d’union. rez de >chaussée <<- /tu/ ->> rez-de-chaussée # Il manque un trait d’union. science fiction <<- /tu/ ->> science-fiction # Il manque un trait d’union. stock >option |
︙ | |||
3900 3901 3902 3903 3904 3905 3906 | 3923 3924 3925 3926 3927 3928 3929 3930 3931 3932 3933 3934 3935 3936 3937 3938 | - - + + | <<- /conf/ not \1.isupper() and not \2.isupper() -2>> =suggSimil(\2, ":[NA].*:[pi]", True) # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. [quels|quelles] [ces|des|les|mes|ses|tes|nos|vos|ce|cet|cette|ma|ta|sa|mon|je|tu|il|ils|elle|elles|nous|vous|on] <<- /conf/ not \1.isupper() and not \2.isupper() and not value(<1, "|tels|telles|") -2>> =suggSimil(\2, ":[NA].*:[pi]", True) # Incohérence : les mots “\1” et “\2” ne devraient pas se succéder. |
︙ | |||
4600 4601 4602 4603 4604 4605 4606 | 4623 4624 4625 4626 4627 4628 4629 4630 4631 4632 4633 4634 4635 4636 4637 4638 4639 4640 4641 4642 4643 | - - - - - - - + + + + + + + | on [ne|n’] [le|la|l’|les|en|me|m’|te|t’|se|s’|nous|vous|lui|leur|y] @:¬:(?:V|Ov) on ?[ne|n’]¿ [me|m’|te|t’|se|s’|nous|vous] [le|la|l’|les|en|y] @:¬:(?:V|Ov) on ?[ne|n’]¿ [le|la|l’|les] [lui|leur|en|y] @:¬:(?:V|Ov) on ?[ne|n’]¿ [lui|leur] en @:¬:(?:V|Ov) <<- /conf/ not morph(<1, ":3s") and not value(<1, "|n’|m’|t’|s’|") --1>> =suggSimil(\-1, ":(?:3s|Ov)", False) # Incohérence avec “\1” : “\-1” devrait être un verbe, un pronom objet, un adverbe de négation, etc. |
︙ | |||
4674 4675 4676 4677 4678 4679 4680 4681 4682 4683 4684 4685 4686 4687 4688 4689 4690 4691 4692 4693 4694 | 4697 4698 4699 4700 4701 4702 4703 4704 4705 4706 4707 4708 4709 4710 4711 4712 4713 4714 4715 4716 4717 4718 4719 4720 4721 4722 4723 4724 4725 4726 4727 4728 4729 4730 4731 | + + + + + + + + + + + + + + | TEST: elle {{c’}}en était trop vanté TEST: cet homme, perdu dans ses pensées, allait {{c’}}en faire du souci. TEST: il {{c’}}accoutumait à sa nouvelle fonction. TEST: elle {{c’}}anime dès qu’on fait du bruit. TEST: {{s’}}{{avait}} fonctionné TEST: c’était merveilleux. __conf_ce_qui_verbe__ ce qui ?[lui|leur|leurs|nous|vous]¿ (et) ?@:[WX]¿ ?@:[WX]¿ @:(?:[AQD]|V1.*:Y) <<- -1>> est # Confusion probable : “et” est une conjonction de coordination. Pour le verbe “être”, écrivez “est”. ce qui ?[lui|leur|leurs|nous|vous]¿ (étai) ?@:[WX]¿ ?@:[WX]¿ @:(?:[AQD]|V1.*:Y) <<- -1>> était # Confusion probable : “étai” est un nom commun. Pour le verbe “être”, écrivez “était”. TEST: ce qui {{et}} beau. TEST: ce qui {{étai}} notre lot. TEST: ce qui lui {{étai}} propre TEST: ce qui nous {{et}} pas vraiment utile __conj_mieux_vaut__ mieux ?[ne|n’]¿ [vaux|valais|valus|vaudras|vaudrais] <<- /conj/ --1>> =\-1[:-1]+"t" # Conjugaison erronée. Accord avec “mieux” : utilisez la 3ᵉ personne du singulier. TEST: avec toi qui ne sais rien de rien, mieux {{vaux}} ne rien dire. TEST: Mais là-bas mieux {{valais}} ouvrir sa gueule que se taire. ## 1pl __conj_nous__ <start> nous @:V¬:(?:G|Y|P|1p|3[sp]) <<- /conj/ not value(>1, "|je|tu|il|elle|on|nous|vous|ils|elles|") -3>> =suggVerb(\3, ":1p") # Conjugaison erronée. Accord avec “nous”. Le verbe devrait être à la 1ʳᵉ personne du pluriel. |
︙ | |||
4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 4988 4989 4990 | 5014 5015 5016 5017 5018 5019 5020 5021 5022 5023 5024 5025 5026 5027 5028 5029 5030 5031 5032 5033 5034 5035 5036 5037 5038 5039 5040 5041 5042 5043 5044 | + + + + + + + + + + + + + + + + + | TEST: Comme on lui disait que vous-même aviez déjà consulté le notaire TEST: ce sont des terroristes et ça ne nous arrivera pas à nous, qui n’avons rien à nous reprocher TEST: mes supérieurs et moi-même avons pris la décision de ne pas vendre TEST: Ni lui ni moi n’avions mangé TEST: Mon épouse et moi-même avons toujours dit TEST: que vous ou moi ignorions à peu près tout du boson de Higgs n’a pas du tout le même sens # Confusion futur / conditionnel __vmode_je_futur__ <start> ([demain|oui|non]) ?,¿ [je|j’] ?[ne|n’]¿ ?y¿ (*WORD) ?@:[WX]¿ ?@:[WX]¿ <end> <start> ([demain|oui|non]) ?,¿ [je|j’] ?[ne|n’]¿ ?y¿ (*WORD) ?@:[WX]¿ ?@:[WX]¿ || [le|la|l’|les|un|une|des|ce|cet|cette|ces|mon|ton|son|ma|ta|sa|mes|tes|ses|notre|votre|nos|vos|leur|leurs|quelques|plusieurs|certains|certaines] *WORD <end> <<- /vmode/ morph(\2, ":K:1s", ">(?:aimer|vouloir)/") -2>> =\2[:-1] # Confusion possible. Le mot “\1” semble indiquer une certitude. Dans ce cas, “\2” devrait être conjugué au futur, non au conditionnel. TEST: demain, je {{viendrais}} ->> viendrai TEST: non, je n’{{irais}} pas là-bas ! ->> irai TEST: oui, j’y {{penserais}}… ->> penserai TEST: oui, je le voudrais. TEST: oui, je l’aimerais. TEST: oui, je la prendrais pour femme si ça ne tenait qu’à moi. !! !! !!!! Confusions générales !! !! !! |
︙ | |||
5211 5212 5213 5214 5215 5216 5217 | 5265 5266 5267 5268 5269 5270 5271 5272 5273 5274 5275 5276 5277 5278 5279 5280 5281 5282 5283 5284 5285 5286 5287 5288 5289 | - + - + + | TEST: elle n’{{en n’}}avait plus pour longtemps. ->> "en " TEST: toute chose pourrait finalement advenir indifféremment en n’importe quel point du globe #### Divers __ppas_lui_verbe__ lui ~é(?:es?|s)$ |
︙ | |||
5343 5344 5345 5346 5347 5348 5349 | 5398 5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 5413 5414 5415 5416 | - + + + | à été <<- /conf/ -1>> a # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez “a”. qui à @:Q¬:M <<- /conf/ \3.islower() -2>> a # Confusion : “à” est une préposition. Pour le verbe avoir, écrivez “a”. |
︙ | |||
5399 5400 5401 5402 5403 5404 5405 5406 5407 5408 5409 5410 5411 5412 | 5456 5457 5458 5459 5460 5461 5462 5463 5464 5465 5466 5467 5468 5469 5470 | + | TEST: Ce chien, croyons-nous savoir, {{à le}} maître le plus violent qui soit. TEST: L’homme {{à}} ouvert la boîte. TEST: Il ne nous reste plus qu’{{à}} {{vérifié}} si votre maquette. TEST: Je veux {{à}} {{mangé}}. TEST: Ne pas hésiter {{à}} {{demandé}} des conseils. TEST: cette femme, dans son délire, {{à}} {{jetez}} son argent à la poubelle. TEST: Ce que cet homme à {{devient}} aujourd’hui notre problème TEST: le peuple leur {{à}} donner tort TEST: il en a. TEST: elle en a. TEST: celle qui à contrario nous a foutu dans la merde. TEST: ceux qui à Somewhere se sont si mal illustrés. TEST: en à peine vingt ans |
︙ | |||
5662 5663 5664 5665 5666 5667 5668 | 5720 5721 5722 5723 5724 5725 5726 5727 5728 5729 5730 5731 5732 5733 5734 | - + | a haut risque a hue et à dia a huis clos a intervalles [réguliers|irréguliers] a juste [raison|titre] a l’ heure actuelle a l’ heure qu’ il est |
︙ | |||
5815 5816 5817 5818 5819 5820 5821 5822 5823 5824 5825 5826 5827 5828 | 5873 5874 5875 5876 5877 5878 5879 5880 5881 5882 5883 5884 5885 5886 5887 | + | __conf_à_substantifs__ >arc a >poulie >arme a >feu >bombe a [eau|fragmentation|retardement] [>canne|>cane] a [>pêche|>sucre] >caisse a >outil >chair a [pâté|>canon] >couteau a cran d’ arrêt >crayon a [lèvres|sourcils] >cuillère a [café|soupe] >fard a paupières [>fille|fils] a [papa|maman] >gaz a effet de serre >lime a >ongle >machine a [café|coudre|laver] |
︙ | |||
6057 6058 6059 6060 6061 6062 6063 | 6116 6117 6118 6119 6120 6121 6122 6123 6124 6125 6126 6127 6128 6129 6130 | - + | TEST: on va y arriver, {{au temps que faire se peu}}… TEST: autant que faire se peut, il faut éviter la confusion entre ces deux discours. # ça / çà / sa __conf_ça_çà_sa__ ça @:[NAQ].*:f¬:(?:G|P|[123][sp])|>seule?s?/ |
︙ | |||
6084 6085 6086 6087 6088 6089 6090 6091 6092 6093 6094 6095 6096 6097 | 6143 6144 6145 6146 6147 6148 6149 6150 6151 6152 6153 6154 6155 6156 6157 | + | TEST: et {{sa}} par deux fois TEST: Il trouva de la nourriture {{ça et là}}. ->> çà et là TEST: Elle parle comme {{ça}} mère. ->> sa TEST: C’est comme {{sa}}. TEST: {{sa}} l’ennuierait, ce fils de pute, de dire bonjour ? TEST: il faut s’y prendre comme {{sa}} TEST: on fait {{sa}} lorsqu’on a tout perdu TEST: Eux, ils appellent ça routine. TEST: avec sa presque belle-mère TEST: sa toute nouvelle application de synchronisation de fichiers TEST: communiquer avec sa ou son partenaire. # Campagne / compagne __conf_campagne_compagne__ |
︙ | |||
6594 6595 6596 6597 6598 6599 6600 6601 6602 6603 6604 6605 6606 6607 | 6654 6655 6656 6657 6658 6659 6660 6661 6662 6663 6664 6665 6666 6667 6668 6669 6670 6671 6672 6673 6674 6675 6676 6677 | + + + + + + + + + + | TEST: Ils sont pas si {{différends}} de nous. TEST: Cette fois, il parla avec un ton différent. TEST: J’en veux un différent. TEST: Il en veut des différents. TEST: dans ses différents ouvrages TEST: dans ses différents postes gouvernementaux # dites / dîtes __conf_dites_dîtes__ *WORD dîtes @:A¬:G <<- /conf/ morph(\1, ":[NA].*:[fe]:[pi]", ":G") -2>> dites # Confusion probable : “dîtes” est une forme verbale de dire au subjonctif. Pour l’ajectif, écrivez “dites”. TEST: Des armes {{dîtes}} létales. ->> dites TEST: usage débridé des armes dites létales TEST: Vous dîtes “idiotes”, je dis “originales”. # dû / du __ppas_dû_du__ du [à|a|au|aux] <<- /ppas/ \2.islower() -1>> dû # Confusion. Ce qui est dû. [mon|notre|votre] du |
︙ | |||
6639 6640 6641 6642 6643 6644 6645 6646 6647 6648 6649 6650 6651 6652 | 6709 6710 6711 6712 6713 6714 6715 6716 6717 6718 6719 6720 6721 6722 6723 6724 6725 6726 6727 6728 6729 6730 6731 | + + + + + + + + + | # en / an __être_en_xxxx__ [>être|>rester|>demeurer] an [contradiction|désaccord|accord] <<- /conf/ -2>> en # Confusion. Un an = une année. Pour la préposition, écrivez “en”. TEST: Je suis {{an}} désaccord avec lui. # en dessous __conf_dessus_dessous__ en dessus en-dessus <<- ->> en dessous|au-dessus # Confusion.|https://fr.wiktionary.org/wiki/en_dessous TEST: Il est {{en dessus}} de tout. # en général __conf_en_général__ en générale <<- /conf/ ->> en général # Dans cette locution, “général” est toujours au masculin singulier.|https://fr.wiktionary.org/wiki/en_g%C3%A9n%C3%A9ral TEST: On n’en sait {{en générale}} pas assez. |
︙ | |||
7245 7246 7247 7248 7249 7250 7251 | 7324 7325 7326 7327 7328 7329 7330 7331 7332 7333 7334 7335 7336 7337 7338 | - + | <<- /conf/ not morph(<1, ":[VR]|<start>") and not morph(>1, ":(?:3s|Ov)") -2>> ont # Confusion probable. Exemples : « on y va », « ils ont faim ». ~-ont$ <<- /conf/ ->> =\1[:-1] # Incohérence : “ont” est une forme conjuguée du verbe “avoir” (par exemple: “ils ont”). Pour le pronom personnel, écrivez “on”. [<start>|,] *WORD ont |
︙ | |||
7269 7270 7271 7272 7273 7274 7275 7276 7277 7278 7279 7280 7281 7282 | 7348 7349 7350 7351 7352 7353 7354 7355 7356 7357 7358 7359 7360 7361 7362 | + | TEST: comme ce que l’{{ont}} {{voit}} dans le lien entre polygynie et guerre. TEST: Tout à fait, {{ont}} peut même dire qu’à l’adolescence, ce sont les problèmes de l’enfance qui ressortent. TEST: les politiques de l’offre ont échoué. TEST: qui on blâme, ce soir ? TEST: qui n’ont somme toute que le désir de vivre paisiblement TEST: ces textes, quoi qu’on en pense, ont force de loi. TEST: s’ils n’ont ne serait-ce qu’un peu de jugeotte, on ne les reverra plus. TEST: En français, la plupart des noms de métier traditionnellement masculins soit ne disposent pas d’une forme féminine, soit ont des formes féminines anciennes tombées en désuétude. # ou / où __conf_où_ou__ <start> Ou @:3[sp]¬:Y <<- /conf/ -2>> Où # Confusion probable. La conjonction “ou” signale une alternative. Utilisez “où” pour “en quel lieu”. |
︙ | |||
7556 7557 7558 7559 7560 7561 7562 7563 7564 7565 7566 7567 7568 7569 7570 7571 7572 7573 7574 7575 7576 | 7636 7637 7638 7639 7640 7641 7642 7643 7644 7645 7646 7647 7648 7649 7650 7651 7652 7653 7654 7655 7656 7657 7658 7659 7660 7661 | + + + + + | à la >seconde [>prêt|>pré] <<- /conf/ -3>> près # Confusion probable. Locution “à la \2 près”. au >mètre [>prêt|>pré] <<- /conf/ -3>> près # Confusion probable. Locution “au \2 près”. à [ceci|cela] ([prêt|prêts]) [que|qu’] , à [ceci|cela] ([prêt|prêts]) , <<- /conf/ -1>> près # Confusion probable. Locution “à \2 près”.|https://fr.wiktionary.org/wiki/%C3%A0_cela_pr%C3%A8s TEST: depuis {{prêt}} de 15 ans TEST: ils se sont approchés très {{prêts}}. TEST: Je suis si {{prêt}} d’y arriver. TEST: Elle est si {{prêt}} de la trouver. TEST: Il est {{près}} à les aider TEST: Elle va regarder ça de plus {{prêt}}. TEST: Il était rasé de {{prés}} TEST: Il est un peu fantasque ; mais, à cela {{prêt}}, c’est un aimable homme. TEST: Il a obtenu un prêt de Patrick TEST: Il a obtenu un prêt de Le Drian TEST: collait au millimètre près à la réalité # puits / puis __conf_puits_puis__ |
︙ | |||
8231 8232 8233 8234 8235 8236 8237 | 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 | - - - + + + + - - + + | TEST: un immonde {{vert}} de terre TEST: Un {{ver}} de bière fraîche. TEST: ce {{vert}} quoi nous allons, c’est une catastrophe à l’échelle planétaire. # voix / voie / vois / voit __conf_voie_voix_vois_voit__ |
︙ | |||
8270 8271 8272 8273 8274 8275 8276 | 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366 8367 8368 8369 8370 | - + | # voir / voire __conf_voir_voire__ voir [grand|petit|rouge] <<- %2>> voir @:A¬:[NGM] |
︙ | |||
8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 | 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 | + + - + + + + + + + + + + | TEST: l’immobilier a été ces dernières années l’investissement le plus rentable (voir graphique ci-dessous) TEST: elles sont pas mal ainsi, voire élégantes pourrait-on dire. TEST: il y en a peu, voire très peu. TEST: car elles pénètrent dans les poumons voire le système sanguin. TEST: des enfants malades, qui préfèrent souvent voir Dark Vador que des vieux clowns un peu flippants. TEST: les membres de l’équipage commencent à voir flou TEST: un travail qu’il préfère voir effectué par un spécialiste plutôt que par lui-même TEST: médicaments qui me donnent envie de vomir, qui m’abrutissent, qui me font voir flou # vieil / vieux __conf_vieil_vieux_euphonie__ vieux homme <<- /conf/ -1>> vieil # Euphonie. Utilisez “vieil” pour un nom masculin singulier commençant par une voyelle ou un h.|https://fr.wikipedia.org/wiki/Euphonie vieux ~^[aeéiîou] <<- /conf/ morph(\2, ":[NA].*:[me]:s", ":[123][sp]") |
︙ | |||
9263 9264 9265 9266 9267 9268 9269 | 9360 9361 9362 9363 9364 9365 9366 9367 9368 9369 9370 9371 9372 9373 9374 | - + | à plat ventre à plate couture à plein [régime|temps|nez] à pleins poumons à plus forte raison à plus d’un titre à point nommé |
︙ | |||
9581 9582 9583 9584 9585 9586 9587 9588 9589 9590 9591 9592 9593 9594 | 9678 9679 9680 9681 9682 9683 9684 9685 9686 9687 9688 9689 9690 9691 9692 | + | de près ou de loin de par le monde ?entier¿ de part et d’autre de ?presque¿ partout d’ un peu partout de petite taille de pied ferme de place en place de plein [droit|fouet] de plus [belle|près] de premier [choix|ordre|plan] de première [catégorie|main|nécessité] de prime abord de proche en proche de pure forme |
︙ | |||
9959 9960 9961 9962 9963 9964 9965 9966 9967 9968 9969 9970 9971 9972 | 10057 10058 10059 10060 10061 10062 10063 10064 10065 10066 10067 10068 10069 10070 10071 | + | niveau par niveau pièce par pièce par-ci ?,¿ par-là par-derrière par-dessus le marché par-dessus tout par-devant par instants par là parfois partant de là partout pas du tout pas le moins du monde pas à pas |
︙ | |||
10567 10568 10569 10570 10571 10572 10573 10574 10575 10576 10577 10578 10579 10580 | 10666 10667 10668 10669 10670 10671 10672 10673 10674 10675 10676 10677 10678 10679 10680 10681 10682 10683 | + + + + | pour autant [que|qu’] nous sachions @¬:Y pour autant [que|qu’] vous sachiez @¬:Y pour autant [que|qu’] [ils|elles] sachent @¬:Y <<- ~1:5>> * pour cette raison [que|qu’] <<- ~1:3>> * pour les uns @:¬:[AQ].*:[me]:[pi] pour les autres @:¬:[AQ].*:[pi] <<- ~1:3>> * [le|un|ce|mon|ton|son] putain [de|d’] @:[NA].*:[me] <<- ~2:3>> * tambour battant tambours battants <<- morph(<1, ":(?:V|N:f)", ":G") ~>> * |
︙ | |||
10613 10614 10615 10616 10617 10618 10619 10620 10621 10622 10623 10624 10625 10626 10627 10628 10629 10630 10631 10632 10633 10634 10635 10636 10637 10638 10639 10640 10641 10642 10643 10644 10645 10646 10647 10648 10649 10650 10651 10652 10653 10654 10655 10656 | 10716 10717 10718 10719 10720 10721 10722 10723 10724 10725 10726 10727 10728 10729 10730 10731 10732 10733 10734 10735 10736 10737 10738 10739 10740 10741 10742 10743 10744 10745 10746 10747 10748 10749 10750 10751 10752 10753 10754 10755 10756 10757 10758 10759 10760 10761 10762 10763 10764 | + + + + + | >arme de [poing|guerre] >arme de destruction massive >argent de poche >article de presse >attestation sur l’ honneur >attendre de pied ferme ayants droit bas résille >benne à >ordure >billet de *NUM [>euro|>dollar|>centime|>cent|>livre|>shilling] [>bisphénol|>bisphenol] A >blanche comme neige >blanche comme de la craie [>boîte|>boite] aux lettres [>boîte|>boite] à gants >bombe à [eau|fragmentation|retardement] >brosse à >dent >canne à [pêche|sucre] >caisse à >outil >chair à [pâté|>canon] >chambre [de|d’] [agriculture|hôte|hôtes|commerce|compensation|décompression|dégrisement] >chasse à courre >chemin de [traverse|fer] >chili con carne >claire comme de l’ eau de [boudin|roche|source] >claire comme du cristal >claire comme jus de [boudin|chaussette|chaussettes|chique] [>clé|>clef] à molette >commise d’ office >condamnée à mort >convention [récepteur|générateur] >conne comme la lune >conne comme un balai >conne comme une valise sans >poignée >coup [de|d’] [balai|bol|cœur|couteau|foudre|fil|grâce|jarnac|théâtre|coude|genou|main|patte|pied|poing|poker|pouce|tête|avance|éclat|État|œil|épaule] >coup du sort >course contre la montre [cousu|cousue|cousus|cousues] [main] [cousu|cousue|cousus|cousues] de fil blanc >crayon à [lèvres|sourcils] [>coût|>cout] de revient >couteau à cran d’ arrêt >cuillère à [café|soupe] >déclaration sur l’ honneur >délai [de|d’] [attente|carence|connexion|prescription|préavis|rétraction|rigueur] >demande d’ asile >descente aux [enfers|flambeaux] [>dîner|>diner] aux chandelles >digne de [confiance|foi] |
︙ | |||
10774 10775 10776 10777 10778 10779 10780 10781 10782 10783 10784 10785 10786 10787 10788 10789 10790 10791 10792 10793 10794 10795 10796 10797 10798 10799 10800 10801 | 10882 10883 10884 10885 10886 10887 10888 10889 10890 10891 10892 10893 10894 10895 10896 10897 10898 10899 10900 10901 10902 10903 10904 10905 10906 10907 10908 10909 10910 10911 10912 10913 10914 10915 10916 10917 10918 10919 | + + - + | basse consommation bon [enfant|marché|teint] bon chic ?,¿ bon genre [>clé|>clef] en >main dernier cri fleur bleue grand [public|luxe|maximum] grande taille grandeur nature haut de gamme hautee [résolution|fidélité|tension] longue [distance|portée|durée] meilleur marché numéro un numéro @:B plein cadre top secret vieux jeu open source Créative Commons pair à pair petite taille plein les yeux pur [sucre|jus] terre à terre vieille école <<- morph(<1, ":(?:N|A|Q|W|V0e)", ":D") ~>> * __purge_couleurs__ |
︙ | |||
11208 11209 11210 11211 11212 11213 11214 11215 11216 11217 | 11318 11319 11320 11321 11322 11323 11324 11325 11326 11327 11328 11329 11330 11331 11332 11333 11334 11335 11336 11337 | + + + - | <<- ~1:4>> * en [certaines|quelques|plusieurs] occasions @¬:A.*:[fe]:[pi] <<- ~1:3>> * en de multiples occasions @¬:A.*:[fe]:[pi] <<- ~1:4>> * en un sens @¬:A.*:[me]:[si] <<- ~1:3>> * entre autres choses @¬:A.*:[fe]:[pi] <<- ~1:3>> * |
︙ | |||
11276 11277 11278 11279 11280 11281 11282 11283 11284 11285 | 11388 11389 11390 11391 11392 11393 11394 11395 11396 11397 11398 11399 11400 11401 11402 11403 11404 11405 11406 | + - + | >aller bon train >arriver à échéance >arriver à point nommé >arriver à bon port >battre en [brèche|retraite] >chauffer à blanc >compter à rebours >condamner à mort >couler à ?grands¿ flots >demander [assistance|audience|conseil|pardon] [>donner|>redonner] sens |
︙ | |||
11301 11302 11303 11304 11305 11306 11307 11308 11309 11310 11311 | 11414 11415 11416 11417 11418 11419 11420 11421 11422 11423 11424 11425 11426 11427 11428 11429 11430 11431 11432 11433 11434 11435 11436 11437 11438 | + - - - - + + + + + | >faire grise mine >faire grand [bruit|cas] >faire profil bas >faire salle comble >faire table rase >faire ce que bon [me|te|lui|nous|vous|leur] semble >foutre en l’ air [>gonfler|>regonfler] à bloc >jouer franc jeu >lâcher prise >laisser pour compte >marcher à rebours |
︙ | |||
11337 11338 11339 11340 11341 11342 11343 | 11452 11453 11454 11455 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 | - - + + - - - + + + - + | >tenir ?[ça|cela|ceci]¿ à distance ?respectable¿ >tenir compte >tenir au courant >trier sur le volet >trouver refuge >tirer [avantage|profit] >tourner court |
︙ | |||
11501 11502 11503 11504 11505 11506 11507 11508 11509 11510 11511 11512 11513 11514 | 11616 11617 11618 11619 11620 11621 11622 11623 11624 11625 11626 11627 11628 11629 11630 11631 11632 11633 | + + + + | TEST: Elles ont avec constance démontré l’inanité de leur politique. TEST: On l’a mauvaise, j’peux vous l’dire. TEST: Défigurée, travestie, dans tous les cas contestée. TEST: Une file d’attente de plusieurs heures s’étire au rez-de-chaussée TEST: à une hausse des coûts de l’emprunt à court et moyen terme. TEST: Elle n’avait que rarement pris connaissance de ses droits. TEST: On ajoutera que si elle n’a que rarement pris la connerie pour objet TEST: Les bas résille, le détail qui fait mouche. TEST: un vice pour les uns diabolique et pour les autres patriarcal TEST: Les gains sont en un sens maigres. TEST: Des vêtements grande taille @@@@ @@@@ @@@@ @@@@ |
︙ | |||
11643 11644 11645 11646 11647 11648 11649 | 11762 11763 11764 11765 11766 11767 11768 11769 11770 11771 11772 11773 11774 11775 11776 11777 11778 11779 11780 11781 11782 11783 11784 11785 11786 | - + + | <<- /gn/ morph(\2, ":[NA].*:[me]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:f", "*") and not apposition(\2, \3) -3>> =suggMasSing(\3, True) # Accord de genre erroné : « \1 \2 » est masculin, « \3 » est féminin. <<- /gn/ morph(\2, ":[NA].*:[si]", ":G") and morph(\3, ":[NA].*:p", ":[GWsi]") and not apposition(\2, \3) -3>> =suggMasSing(\3) # Accord de nombre erroné avec « \1 \2 » : « \3 » devrait être au singulier. [et|ou] le *WORD *WORD <<- /gn/ morph(\2, ":D") and not morph(<1, ":[NA]") and not \4.startswith("seul") >>> |
︙ | |||
11789 11790 11791 11792 11793 11794 11795 11796 11797 11798 11799 11800 11801 11802 11803 11804 11805 11806 11807 11808 11809 11810 | 11909 11910 11911 11912 11913 11914 11915 11916 11917 11918 11919 11920 11921 11922 11923 11924 11925 11926 11927 11928 11929 11930 11931 11932 11933 11934 11935 11936 11937 11938 11939 11940 11941 11942 11943 11944 11945 11946 11947 11948 11949 11950 11951 11952 11953 | + + + + + + + + + + + + + + + + + + + + + + + | __gn_aucun_1m__ aucun *WORD <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> aucune # Accord de genre erroné : « \2 » est féminin. <<- /gn/ __also__ and hasMasForm(\2) -2>> =suggMasSing(\2, True) # Accord de genre erroné : « \1 » est un déterminant masculin. <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. TEST: aucun {{accords}} n’y changera rien. TEST: {{aucun}} femme ne réagirait si bêtement __gn_aucune_1m__ aucune *WORD <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> aucun # Accord de genre erroné : « \2 » est masculin. <<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True) # Accord de genre erroné : « \1 » est un déterminant féminin. <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. TEST: aucune {{passions}} n’est digne qu’on meurt pour elle. TEST: {{aucune}} homme ne comprendrait ça __gn_nul_1m__ nul *WORD <<- /gn/ morph(\2, ":[NA].*:f", ":[GWme]") -1>> nulle # Accord de genre erroné : « \2 » est féminin. <<- /gn/ __also__ and hasMasForm(\2) -2>> =suggMasSing(\2, True) # Accord de genre erroné : « \1 » est un déterminant masculin. <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. TEST: nul {{accords}} n’y changera rien. TEST: {{nul}} femme ne réagirait si bêtement __gn_nulle_1m__ nulle *WORD <<- /gn/ morph(\2, ":[NA].*:m", ":[efGW]") -1>> nul # Accord de genre erroné : « \2 » est masculin. <<- /gn/ __also__ and hasFemForm(\2) -2>> =suggFemSing(\2, True) # Accord de genre erroné : « \1 » est un déterminant féminin. <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggFemSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. TEST: nulle {{passions}} n’est digne qu’on meurt pour elle. TEST: {{nulle}} homme ne comprendrait ça __gn_un_1m__ un *WORD <<- /gn/ morph(\2, ":[NA].*:f", ":(?:e|m|G|W|V0|3s|Y)") -1>> une # Accord de genre erroné : « \2 » est féminin. <<- /gn/ __also__ and hasMasForm(\2) -2>> =suggMasSing(\2, True) # Accord de genre erroné : « \1 » est un déterminant masculin. <<- /gn/ morph(\2, ":[NA].*:p", ":[siGW]") -2>> =suggMasSing(\2) # Accord de nombre erroné : « \2 » devrait être au singulier. |
︙ | |||
11835 11836 11837 11838 11839 11840 11841 11842 11843 11844 11845 11846 11847 11848 | 11978 11979 11980 11981 11982 11983 11984 11985 11986 11987 11988 11989 11990 11991 11992 | + | TEST: un {{fromages}}. ->> fromage TEST: Un {{ballons}} ->> ballon TEST: Une {{cinglées}} ->> cinglée TEST: {{une}} des {{chats}} TEST: {{une}} kyste ->> un TEST: {{une}} des {{joueurs}} TEST: mille et une merveilles TEST: Quatorze heures découpées en quatre parties, une sortant en salles chaque semaine ## un / une __gn_un_2m__ un *WORD *WORD <<- /gn/ not value(<1, "|et|ou|d’|") and not \3.startswith("seul") >>> <<- /gn/ morph(\2, ":[NA].*:[me]", ":(?:B|G|V0)") and morph(\3, ":[NA].*:f", "*") and not apposition(\2, \3) |
︙ | |||
12132 12133 12134 12135 12136 12137 12138 12139 12140 12141 12142 12143 12144 12145 | 12276 12277 12278 12279 12280 12281 12282 12283 12284 12285 12286 12287 12288 12289 12290 | + | <<- /gn/ morph(\3, ":[NA].*:[pi]") and morph(\4, ":[NA].*:s", "*") and not apposition(\3, \4) and not (value(>1, "|et|,|") and morph(>2, ":A")) -4>> =suggPlur(\4) # Accord de nombre erroné avec « \2 \3 » : « \4 » devrait être au pluriel. TEST: les pitres {{imbécile}} TEST: il faut en convenir et les femmes {{oubliés}} seront satisfaites. TEST: et les femmes {{retrouvés}} seront emmenées à l’hôpital. TEST: les moins éloignées possible TEST: Les besoins minimums en matière de sommeil sont-ils les mêmes d’un individu à l’autre ? __gn_leurs_1m__ leurs *WORD <<- /gn/ (morph(\2, ":[NA].*:s", ":(?:[ipGW]|[123][sp])") and not (value(>1, "|et|ou|") and morph(>2, ":[NA]"))) or \2 in aREGULARPLURAL -2>> =suggPlur(\2) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel. |
︙ | |||
12493 12494 12495 12496 12497 12498 12499 | 12638 12639 12640 12641 12642 12643 12644 12645 12646 12647 12648 12649 12650 12651 12652 | - + | TEST: Je connais nombre d’{{emmerdeur}} et aucun n’est pire que lui. __gn_det_groupe_de_1m__ [un|une|le|la|ce|cette|mon|ton|son|ma|ta|sa|les|ces|des|mes|tes|ses|nos|vos|leurs|quelques] [>centaine|>millier|>million|>milliard|>dizaine|>douzaine|>multitude|>horde] [de|d’] *WORD <<- /gn/ morph(\4, ":[NA].*:s", ":[ip]|>fraude/") or \4 in aREGULARPLURAL |
︙ | |||
12532 12533 12534 12535 12536 12537 12538 | 12677 12678 12679 12680 12681 12682 12683 12684 12685 12686 12687 12688 12689 12690 12691 12692 12693 12694 12695 12696 12697 12698 12699 12700 12701 12702 12703 12704 12705 12706 12707 12708 12709 12710 12711 12712 12713 12714 12715 12716 12717 12718 | - - - + + + + + - + - + + + | or \2 in aREGULARPLURAL -2>> =suggPlur(\2) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel. mille *WORD <<- /gn/ (morph(\2, ":[NA].*:s", "*") or \1 in aREGULARPLURAL) and not value(<1, "|le|un|ce|du|") -2>> =suggPlur(\2) # Accord de nombre erroné avec « \1 » : « \2 » devrait être au pluriel. |
︙ | |||
14298 14299 14300 14301 14302 14303 14304 14305 14306 14307 14308 14309 14310 14311 | 14447 14448 14449 14450 14451 14452 14453 14454 14455 14456 14457 14458 14459 14460 14461 14462 14463 14464 14465 14466 14467 14468 14469 14470 14471 14472 14473 14474 14475 14476 14477 14478 14479 | + + + + + + + + + + + + + + + + + + + | -2>> est # Confusion probable : “et” est une conjonction de coordination. Pour le verbe être à la 3ᵉ personne du singulier, écrivez “est”. TEST: où {{et}} cet ennemi ? TEST: où {{et}} l’homme qui est passé ce matin ? TEST: Je veux savoir où et quand, où et pouquoi. TEST: où et avec qui ? __conf_été_était__ [le|ce|cet|mon|ton|son|notre|votre|leur|du|quel] *WORD >été <<- /conf/ morph(\2, ":N.*:m:[si]", ":[AWG]") and morph(<1, ":Cs|<start>|>,") --1>> était # Confusion possible. Si “\1 \2” est le sujet d’“\3”, écrivez “était”. L’été est la saison estivale allant de juin à septembre dans l’hémisphère Nord. [la|cette|mon|ton|son|ma|ta|sa|notre|votre|leur|quelle] *WORD >été <<- /conf/ morph(\2, ":N.*:f:[si]", ":[AWG]") and morph(<1, ":Cs|<start>|>,") --1>> était # Confusion possible. Si “\1 \2” est le sujet d’“\3”, écrivez “était”. L’été est la saison estivale allant de juin à septembre dans l’hémisphère Nord. [les|des|ces|mes|tes|ces|nos|vos|leurs|quelques|plusieurs|certains|certaines|quels|quelles] *WORD >été <<- /conf/ morph(\2, ":N.*:[pi]", ":[AWG]") and morph(<1, ":Cs|<start>|>,") --1>> étaient # Confusion possible. Si “\1 \2” est le sujet d’“\3”, écrivez “étaient”. L’été est la saison estivale allant de juin à septembre dans l’hémisphère Nord. TEST: Ce mec {{été}} un connard fini. ->> était TEST: Quelle solution {{été}} à notre portée ? ->> était TEST: Les questions {{étés}} incompréhensibles. ->> étaient TEST: Le bel été indien que nous avons cette année. # faim / fin __conf_faim_fin__ >avoir (>fin) [>rester|>demeurer] sur [ma|ta|sa|notre|votre|leur|leurs] (>fin) <<- /conf/ -1>> faim # Confusion. Pour évoquer l’envie de se sustenter, écrivez “faim”. |
︙ | |||
15242 15243 15244 15245 15246 15247 15248 | 15410 15411 15412 15413 15414 15415 15416 15417 15418 15419 15420 15421 15422 15423 15424 15425 15426 15427 15428 15429 15430 15431 15432 15433 15434 15435 15436 15437 15438 15439 15440 15441 15442 15443 15444 15445 15446 15447 15448 15449 15450 15451 15452 15453 15454 15455 15456 15457 15458 15459 15460 15461 15462 15463 15464 15465 | - + + + + - + + + | TEST: à leur plus grand fils, ils ont offert une voiture. TEST: ça va d’autonome à hautement dépendant TEST: la pression entre les membres à un moment devient trop importante __infi_de_verbe__ [de|d’] [le|la|l’|leur|les] @:V¬:[YNAM]|>(?:lui|plus)/ |
︙ | |||
15324 15325 15326 15327 15328 15329 15330 | 15497 15498 15499 15500 15501 15502 15503 15504 15505 15506 15507 15508 15509 15510 15511 | - + | __infi_nous_vous_verbe__ [nous|vous] ~ée?s?$ <<- /infi/ morph(\2, ":Q") and not morph(<1, "V0.*[12]p") -2>> _ # Après “\1”, le verbe ne devrait pas être un participe passé. TEST: Nous {{intéressé}} à la question ne suffit pas à faire de nous des experts. TEST: nous {{ridiculisé}} TEST: vous {{mangé}} |
︙ | |||
16166 16167 16168 16169 16170 16171 16172 16173 16174 16175 16176 16177 16178 16179 | 16339 16340 16341 16342 16343 16344 16345 16346 16347 16348 16349 16350 16351 16352 16353 16354 16355 | + + + | [ce|ça|ceci|cela|c’|ç’] >avoir été >seule [que|qu’] [ce|ça|ceci|cela|c’|ç’] >avoir été @:[AQ].*:f¬:[GWYme] @:N.*:f <<- %4>> [ce|ça|ceci|cela|c’|ç’] >être >seule [que|qu’] [ce|ça|ceci|cela|c’|ç’] >être @:[AQ].*:f¬:[GWYme] @:N.*:f <<- %3>> tout en étant @:A <<- %4>> ([il|ce|c’|ç’|quiconque]) ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] ([il|ce|c’|ç’|quiconque]) ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] ([il|ce|c’|ç’|quiconque]) ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenu|redevenu|resté|demeuré] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] ([il|ce|c’|ç’|quiconque]) ?[ne|n’]¿ ?[en|y]¿ || ([>aller|>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || [être|devenir|redevenir|rester] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:f¬:[GWYme]] |
︙ | |||
16294 16295 16296 16297 16298 16299 16300 16301 16302 16303 16304 16305 16306 16307 | 16470 16471 16472 16473 16474 16475 16476 16477 16478 16479 16480 16481 16482 16483 16484 16485 | + + | TEST: tout sera {{dissoute}} TEST: C’est donc seules que les deux femmes sont amenées à comparaître TEST: C’eût été pure imagination. TEST: Je n’arrêtais pas de me répéter que tout cela était peut-être pure imagination TEST: La femme qui faisait ça est partie. TEST: De cela a toujours été faite notre vie TEST: Ce sont différents types de violences TEST: La littérature africaine s’ouvre au monde, parle au monde, tout en étant ancrée dans le continent. TEST: pour « faire de la politique avec leur député » sans « faire de travail pour l’Union européenne », mais tout en étant payés par elle. __ppas_3sg_fem_verbe_état__ ([elle|celle-ci|celle-là]) ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre]) [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:m¬:[GWYfe]] ([elle|celle-ci|celle-là]) ?[ne|n’]¿ ?[en|y]¿ (>avoir) [été|semblé|paru] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:m¬:[GWYfe]] ([elle|celle-ci|celle-là]) ?[ne|n’]¿ ?[en|y]¿ ([>être|>sembler]) [devenue|redevenue|restée|demeurée] [@:[NA].*:p¬:[GWYsi]|@:[AQ].*:m¬:[GWYfe]] ([elle|celle-ci|celle-là]) ?[ne|n’]¿ ?[en|y]¿ |
︙ | |||
16534 16535 16536 16537 16538 16539 16540 | 16712 16713 16714 16715 16716 16717 16718 16719 16720 16721 16722 16723 16724 16725 16726 16727 16728 16729 16730 16731 16732 16733 16734 16735 16736 16737 16738 16739 16740 16741 | - - + + + | TEST: celles-là imaginent être devenues légion __ppas_avoir_été__ >avoir été *WORD <<- /ppas/ morph(\3, ":[123]s", ":[GNAQWY]") -3>> =suggVerbPpas(\3) # Après “avoir été”, il faut un participe passé. <<- /ppas/ not before("[çcCÇ]’$|[cC]e n’$|[çÇ]a (?:n’|)$") and not before("(?i)^ *ne pas ") and not morph(<1, ":Y") >>> |
︙ | |||
16652 16653 16654 16655 16656 16657 16658 | 16831 16832 16833 16834 16835 16836 16837 16838 16839 16840 16841 16842 16843 16844 16845 16846 16847 16848 16849 16850 16851 16852 16853 16854 16855 16856 16857 16858 16859 16860 | - + - + | || [être|devenir|redevenir|rester] *WORD [<start>|,|@:Cs] [un|le|ce|cet] (*WORD) ?qui¿ ?[ne|n’]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || être [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée] *WORD [<start>|,|@:Cs] [un|le|ce|cet] (*WORD) ?qui¿ ?[ne|n’]¿ || ([>adorer|>affirmer|>aimer|>croire|>déclarer|>désirer|>détester|>devoir|>dire|>estimer|>imaginer|>paraître|>paraitre|>penser|>pouvoir|>préférer|>risquer|>savoir|>sembler|>souhaiter|>vouloir]) || avoir [été|semblé|paru] *WORD |
︙ | |||
16710 16711 16712 16713 16714 16715 16716 16717 16718 16719 16720 16721 16722 16723 | 16889 16890 16891 16892 16893 16894 16895 16896 16897 16898 16899 16900 16901 16902 16903 | + | TEST: Le chien ne sera pas {{oubliés}} TEST: les femmes sont vraiment {{partis}} ->> parties TEST: les hommes ne sont pas tout à fait {{fâché}} ->> fâchés TEST: les enfants ne sont pas {{content}} TEST: les réunions sans cesse reportées sont {{annulés}} TEST: l’avenir de la région était {{suspendue}} TEST: il prétendait que les banques universelles « à la française » s’{{était}} très honorablement comportées TEST: Ma mémoire a aussi été {{effacé}}. __ppas_nom_propre_être_accord_genre__ [<start>|,|@:Cs] (@M) ?qui¿ ?[ne|n’]¿ [>être|>sembler|>devenir|>rester|>demeurer|>redevenir|>paraître|>paraitre] *WORD [<start>|,|@:Cs] (@M) ?qui¿ ?[ne|n’]¿ (>avoir) [été|semblé|paru] *WORD [<start>|,|@:Cs] (@M) ?qui¿ ?[ne|n’]¿ ([>être|>sembler]) [devenu|redevenu|resté|demeuré|devenue|redevenue|restée|demeurée] *WORD [<start>|,|@:Cs] (@M) ?qui¿ ?[ne|n’]¿ |
︙ | |||
17183 17184 17185 17186 17187 17188 17189 | 17363 17364 17365 17366 17367 17368 17369 17370 17371 17372 17373 17374 17375 17376 17377 17378 17379 17380 17381 17382 17383 17384 17385 17386 17387 17388 17389 17390 17391 17392 17393 17394 17395 17396 17397 17398 17399 17400 17401 17402 17403 | - - - - - + + + + + + + + + + + + + | __immu_les_avoir_fait_vinfi__ les >avoir fait ?[me|m’|te|t’|se|s’|nous|vous|leur]¿ @:Y <<- %3>> __ppas_pronom_avoir__ [je|j’|tu|il|elle|on|ils|elles|et|qui] ?[ne|n’]¿ ?[lui|leur]¿ >avoir *WORD |
︙ | |||
17280 17281 17282 17283 17284 17285 17286 17287 17288 17289 17290 17291 17292 17293 | 17468 17469 17470 17471 17472 17473 17474 17475 17476 17477 17478 17479 17480 17481 17482 | + | # Accord avec “l’” : le participe passé “\3” devrait être au singulier (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais TEST: ils l’avaient {{retrouvés}}. TEST: Vous l’avez {{trouvez}}. ->> trouvé TEST: Nous l’avons {{mangés}}. TEST: Nous l’avons {{mangées}}. TEST: Ils ne me l’ont pas {{donnés}} TEST: il faillit agir, mais l’ayant {{remarqués}}, il passa son chemin. __ppas_m_t_avoir__ [m’|t’] >avoir @:V[0-3]..t_.*:Q.*:p¬:[GWsi] <<- /ppas/ not before("(?i)\\bqu(?:e |’)") -3>> =suggSing(\3) # Accord avec “\1”. S’il s’agit d’un COD, le participe passé “\3” devrait être au singulier (et accordé en genre).|http://fr.wikipedia.org/wiki/Accord_du_participe_pass%C3%A9_en_fran%C3%A7ais |
︙ | |||
18609 18610 18611 18612 18613 18614 18615 | 18798 18799 18800 18801 18802 18803 18804 18805 18806 18807 18808 18809 18810 18811 18812 18813 18814 18815 18816 18817 18818 18819 18820 18821 18822 18823 18824 18825 18826 | - + + + + + + | -2:3>> \2-elle # Forme interrogative ? Mettez un trait d’union. TEST: {{vient elle}} souvent ? TEST: je ne comprenais pas pourquoi c’était elle qui était punie et que personne ne parlait de celui qui avait fait ça. TEST: C’était elle qui avait pris le contrôle. |
︙ | |||
18808 18809 18810 18811 18812 18813 18814 18815 18816 18817 18818 18819 18820 18821 | 19002 19003 19004 19005 19006 19007 19008 19009 19010 19011 19012 19013 19014 19015 19016 19017 19018 | + + + | #### PARTICIPES PASSÉS APRÈS ÊTRE __ppas_être__ ne [pas|jamais] être @:(?:V(?:1.*:Y|2.*:Ip.*:3s|3.*:Is.*:3s)|2p) <<- /ppas/ --1>> =suggVerbPpas(\-1) # Après “ne \2 être”, il faut un participe passé. avoir [pu|cru|pensé|imaginé] être @:(?:V(?:1.*:Y|2.*:Ip.*:3s|3.*:Is.*:3s)|2p) <<- /ppas/ not value(<1, "|l’|") and not tag_before("que") --1>> =suggVerbPpas(\-1) # Après le verbe “être”, il faut un participe passé. >être ~..er$ <<- /ppas/ not tag(\2, "upron") and morph(\1, ":V", ":Q|>(?:soit)/") and (morph(\2, ":Y", ":[NAQ]") or \2 in aSHOULDBEVERB) and not morph(<1, ":Y|>ce") and not value(<1, "|c’|") and not tag_before(\1, "ce_que") and not tag_before(\1, "suj_vinfi") -2>> =suggVerbPpas(\2) # Après “être”, le verbe ne devrait pas être à l’infinitif. >être ~..ez$ |
︙ | |||
18909 18910 18911 18912 18913 18914 18915 | 19106 19107 19108 19109 19110 19111 19112 19113 19114 19115 19116 19117 19118 19119 19120 19121 19122 19123 19124 19125 19126 19127 19128 19129 19130 19131 19132 19133 19134 19135 19136 19137 19138 19139 19140 19141 19142 19143 19144 19145 19146 19147 19148 19149 19150 19151 19152 19153 19154 19155 19156 19157 19158 19159 19160 19161 19162 | + + + - + + + - - - + + + + + + - - + + + + + + + | TEST: Quiconque {{pensez}} s’en sortir se trompait lourdement. TEST: Il voulut punir quiconque s’y {{adonnaient}}. TEST: quiconque issu de la gauche n’a aucune chance. __conj_ce_celui_celle_qui__ [ce|celui] qui @:V¬:(?:3s|P|Q|G) <<- /conj/ -3>> =suggVerb(\3, ":3s") # Conjugaison erronée. Accord avec “\1 \2”. Le verbe devrait être à la 3ᵉ personne du singulier. |
︙ | |||
19014 19015 19016 19017 19018 19019 19020 | 19224 19225 19226 19227 19228 19229 19230 19231 19232 19233 19234 19235 19236 19237 19238 19239 19240 19241 19242 19243 19244 19245 19246 19247 19248 19249 19250 19251 19252 19253 19254 19255 19256 19257 19258 | - - + + - - - - + + + + + + + + + + + + + + + + | TEST: aucun ne {{vas}} là-bas TEST: il ne faut rien faire ou rien dire contre les manifestants TEST: qui n’ont rien appris et rien oublié TEST: comme si son pays n’avait rien appris du fascisme ni rien reçu de l’Europe __conj_nul_nulle__ |
︙ | |||
19191 19192 19193 19194 19195 19196 19197 | 19413 19414 19415 19416 19417 19418 19419 19420 19421 19422 19423 19424 19425 19426 19427 19428 19429 19430 19431 19432 19433 19434 19435 19436 19437 19438 19439 19440 19441 19442 19443 19444 19445 19446 19447 19448 19449 19450 19451 19452 19453 19454 | - + + + + + - + + + + - + + + + + - + + - + | TEST: {{elles}} {{avance}} rapidement sur ce projet TEST: {{Elles}} n’y {{comprenne}} rien TEST: L’expérience sensible qu’il nous restera bientôt d’elles est à peu près TEST: eux attaqués par des mécanoïdes, elles attaquées par des insectoïdes. __conj_ceux_celles_qui__ |
︙ | |||
19428 19429 19430 19431 19432 19433 19434 | 19662 19663 19664 19665 19666 19667 19668 19669 19670 19671 19672 19673 19674 19675 19676 19677 19678 19679 19680 19681 19682 | - - + + + + | TEST: Des femmes de l’administration Obama y racontent qu’elles ont constaté qu’il leur arrivait régulièrement de ne pas être invitées TEST: Macron président, c’est… # 3pl __conj_nom_propre_et_nom_propre__ ~^[A-ZÉÈ] et ~^[A-ZÉÈ] @:[123][sp]¬:(?:G|3p|P|Q.*:[pi]) |
︙ | |||
19598 19599 19600 19601 19602 19603 19604 19605 19606 19607 19608 19609 19610 19611 | 19834 19835 19836 19837 19838 19839 19840 19841 19842 19843 19844 19845 19846 19847 19848 | + | [je|j’|tu|il|elle|on|ils|nous|vous|elle|elles] >avoir @:V.......e_.*:Q <<- /conf/ -2>> _ # Incohérence. La forme verbale “\3” ne peut pas être utilisé avec l’auxiliaire “avoir”, seulement avec l’auxiliaire “être”. TEST: {{Ait-il}} arrivé à ses fins ? TEST: je n’{{avais}} pas parti avec eux. TEST: il {{avait}} parti. TEST: Avais-je partie liée avec lui ? TEST: il n’y a pas mort d’homme, mais il y a mort de meuf. !! !! !!!! Modes verbaux !! !! !! |
︙ | |||
19922 19923 19924 19925 19926 19927 19928 | 20159 20160 20161 20162 20163 20164 20165 20166 20167 20168 20169 20170 20171 20172 20173 20174 20175 20176 20177 20178 20179 20180 20181 20182 20183 20184 20185 20186 20187 20188 20189 20190 20191 | - - - - - - | !! !! !! !!! À trier !! TODO: Il faut au préalable avoir {{définit}} un protocole. |
︙ | |||
20028 20029 20030 20031 20032 20033 20034 20035 20036 20037 20038 20039 20040 20041 | 20259 20260 20261 20262 20263 20264 20265 20266 20267 20268 20269 20270 20271 20272 20273 20274 20275 20276 20277 20278 20279 20280 | + + + + + + + + | TEST: En 1944, au sortir des deux guerres ayant ravagé l’Europe, le CNR (conseil national de la résistance) avait bien mesuré les tenants et les aboutissants, c’est-à-dire les causes et les conséquences du ravage des inégalités et du jusqu’au boutisme de l’auto-défense d’une caste pour préserver ses acquis. TEST: Ceux de l’Université sont plus perfectionnés TEST: Celles de l’Institut sont plus perfectionnées TEST: Judith A. Allan a aussi constaté que les études sur les crises de la masculinité ne proposent pas ou que très rarement d’indicateurs pour déterminer si une société est (trop) féminisée et si les hommes sont (réellement) en crise. TEST: une procédure abusive pour fermer la porte qu’elles ont essayé d’ouvrir TEST: En France, les hauts fonctionnaires gagnent en moyenne 7850 euros net TEST: Il faut avoir du pouvoir et des ressources TEST: Le con de jadis ne dérangeait personne, maintenant il répand sa haine et son inculture sur les réseaux sociaux. TEST: Les hommes qui se servaient de lui espéraient l’amadouer… TEST: Celui qui se servait de lui voulait lui donner une bonne leçon. TEST: Le CAPES de mathématiques. TEST: cet être que personne n’a vu ni senti à part elle TEST: un délire systématisé de persécution basé sur des interprétations TEST: Et si je te donne son nom, cela t’aiderait, Dworkin ? !!! Tests historiques !! ## Version 0.5.14 TEST: par le léger tissu de rayonne qui les protégeait en ce moment. |
︙ | |||
23028 23029 23030 23031 23032 23033 23034 | 23267 23268 23269 23270 23271 23272 23273 23274 23275 23276 23277 23278 23279 23280 23281 | - + | TEST: Quand elle fut endormie : TEST: — Votre mari n’a plus besoin de cinq mille francs ! Vous allez donc oublier que vous avez prié votre cousin de vous les prêter, et, s’il vous parle de cela, vous ne comprendrez pas. TEST: Puis il la réveilla. Je tirai de ma poche un portefeuille : TEST: — Voici, ma chère cousine, ce que vous m’avez demandé ce matin. TEST: Elle fut tellement surprise que je n’osai pas insister. J’essayai cependant de ranimer sa mémoire, mais elle nia avec force, crut que je me moquais d’elle, et faillit, à la fin, se fâcher. TEST: Voilà ! je viens de rentrer ; et je n’ai pu déjeuner, tant cette expérience m’a bouleversé. TEST: 19 juillet. — Beaucoup de personnes à qui j’ai raconté cette aventure se sont moquées de moi. Je ne sais plus que penser. Le sage dit : Peut-être ? |
︙ |
Modified gc_lang/fr/webext/content_scripts/init.js from [6e32e0cbb4] to [649f297b3c].
︙ | |||
100 101 102 103 104 105 106 107 108 109 110 111 112 113 | 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 | + | } } } }, observePage: function () { // When a textarea is added via jascript we add the menu let that = this; let that = this; this.xObserver = new MutationObserver(function (mutations) { mutations.forEach(function (mutation) { for (let i = 0; i < mutation.addedNodes.length; i++){ if (mutation.addedNodes[i].tagName == "TEXTAREA") { if (that.oOptions === null || that.oOptions.textarea) { oGrammalecte.lMenu.push(new GrammalecteMenu(oGrammalecte.nMenu, mutation.addedNodes[i])); |
︙ |
Modified graphspell-js/char_player.js from [aaed91ab4d] to [ac09087eb7].
︙ | |||
25 26 27 28 29 30 31 | 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 | - + + + + + + + + + + + + + + | ['à', 'a'], ['é', 'e'], ['î', 'i'], ['ô', 'o'], ['û', 'u'], ['ÿ', 'i'], ['y', 'i'], ['â', 'a'], ['è', 'e'], ['ï', 'i'], ['ö', 'o'], ['ù', 'u'], ['ŷ', 'i'], ['ä', 'a'], ['ê', 'e'], ['í', 'i'], ['ó', 'o'], ['ü', 'u'], ['ý', 'i'], ['á', 'a'], ['ë', 'e'], ['ì', 'i'], ['ò', 'o'], ['ú', 'u'], ['ỳ', 'i'], ['ā', 'a'], ['ē', 'e'], ['ī', 'i'], ['ō', 'o'], ['ū', 'u'], ['ȳ', 'i'], ['ç', 'c'], ['ñ', 'n'], ['k', 'q'], ['w', 'v'], ['œ', 'oe'], ['æ', 'ae'], |
︙ |
Modified graphspell-js/ibdawg.js from [eb5a5d5e73] to [5fadd970c2].
︙ | |||
341 342 343 344 345 346 347 348 349 350 351 352 353 354 | 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 | + + + + + + | return aSugg.map( (sSugg) => { return sPfx + sSugg + sSfx; } ); } //console.timeEnd("Suggestions for " + sWord); return aSugg; } _splitSuggest (oSuggResult, sWord) { // split trailing numbers let m = /^([a-zA-Zà-öÀ-Ö_ø-ÿØ-ßĀ-ʯfi-st][a-zA-Zà-öÀ-Ö_ø-ÿØ-ßĀ-ʯfi-st-]+)([0-9]+)$/.exec(sWord); if (m) { oSuggResult.addSugg(m[1] + " " + char_player.numbersToExponent(m[2])); } // split at apostrophes for (let cSplitter of "'’") { if (sWord.includes(cSplitter)) { let [sWord1, sWord2] = sWord.split(cSplitter, 2); if (this.isValid(sWord1) && this.isValid(sWord2)) { oSuggResult.addSugg(sWord1+" "+sWord2); } } |
︙ | |||
362 363 364 365 366 367 368 | 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 | - + | if (sRemain == "") { oSuggResult.addSugg(sNewWord); for (let sTail of this._getTails(iAddr)) { oSuggResult.addSugg(sNewWord+sTail); } return; } |
︙ |
Modified graphspell/char_player.py from [64714404fb] to [01c5a83d44].
︙ | |||
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 | 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 | + + + + + + + + + | 'â': 'a', 'è': 'e', 'ï': 'i', 'ö': 'o', 'ù': 'u', 'ŷ': 'i', 'ä': 'a', 'ê': 'e', 'í': 'i', 'ó': 'o', 'ü': 'u', 'ý': 'i', 'á': 'a', 'ë': 'e', 'ì': 'i', 'ò': 'o', 'ú': 'u', 'ỳ': 'i', 'ā': 'a', 'ē': 'e', 'ī': 'i', 'ō': 'o', 'ū': 'u', 'ȳ': 'i', 'ç': 'c', 'ñ': 'n', 'k': 'q', 'w': 'v', 'œ': 'oe', 'æ': 'ae', 'ſ': 's', 'ffi': 'ffi', 'ffl': 'ffl', 'ff': 'ff', 'ſt': 'ft', 'fi': 'fi', 'fl': 'fl', 'st': 'st', "⁰": "0", "¹": "1", "²": "2", "³": "3", "⁴": "4", "⁵": "5", "⁶": "6", "⁷": "7", "⁸": "8", "⁹": "9" }) def simplifyWord (sWord): "word simplication before calculating distance between words" sWord = sWord.lower().translate(_xTransCharsForSimplification) sNewWord = "" for i, c in enumerate(sWord, 1): if c == 'e' or c != sWord[i:i+1]: # exception for <e> to avoid confusion between crée / créai sNewWord += c return sNewWord.replace("eau", "o").replace("au", "o").replace("ai", "ẽ").replace("ei", "ẽ").replace("ph", "f") _xTransNumbersToExponent = str.maketrans({ "0": "⁰", "1": "¹", "2": "²", "3": "³", "4": "⁴", "5": "⁵", "6": "⁶", "7": "⁷", "8": "⁸", "9": "⁹" }) def numbersToExponent (sWord): return sWord.translate(_xTransNumbersToExponent) aVowel = set("aáàâäāeéèêëēiíìîïīoóòôöōuúùûüūyýỳŷÿȳœæAÁÀÂÄĀEÉÈÊËĒIÍÌÎÏĪOÓÒÔÖŌUÚÙÛÜŪYÝỲŶŸȲŒÆ") aConsonant = set("bcçdfghjklmnñpqrstvwxzBCÇDFGHJKLMNÑPQRSTVWXZ") aDouble = set("bcdfjklmnprstzBCDFJKLMNPRSTZ") # letters that may be used twice successively # Similar chars |
︙ |
Modified graphspell/ibdawg.py from [bd7f8fa082] to [21e398dbec].
︙ | |||
310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 | 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 | + + + + + + - + | aSugg = oSuggResult.getSuggestions(nSuggLimit) if sSfx or sPfx: # we add what we removed return list(map(lambda sSug: sPfx + sSug + sSfx, aSugg)) return aSugg def _splitSuggest (self, oSuggResult, sWord): # split trailing numbers m = re.match(r"(\D+)([0-9]+)$", sWord) if m: print("ok") oSuggResult.addSugg(m.group(1) + " " + cp.numbersToExponent(m.group(2))) # split at apostrophes for cSplitter in "'’": if cSplitter in sWord: sWord1, sWord2 = sWord.split(cSplitter, 1) if self.isValid(sWord1) and self.isValid(sWord2): oSuggResult.addSugg(sWord1+" "+sWord2) def _suggest (self, oSuggResult, sRemain, nMaxSwitch=0, nMaxDel=0, nMaxHardRepl=0, nMaxJump=0, nDist=0, nDeep=0, iAddr=0, sNewWord="", bAvoidLoop=False): # recursive function #logging.info((nDeep * " ") + sNewWord + ":" + sRemain) if int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask: if not sRemain: oSuggResult.addSugg(sNewWord, nDeep) for sTail in self._getTails(iAddr): oSuggResult.addSugg(sNewWord+sTail, nDeep) return |
︙ |
Modified misc/grammalecte.sublime-syntax from [751faa3559] to [15f97f9ddb].
︙ | |||
46 47 48 49 50 51 52 | 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | - + | # other. - match: '\b(?:if|else|and|or|not|in)\b' scope: keyword.python - match: '\b(?:True|False|None)\b' scope: constant.language |
︙ | |||
80 81 82 83 84 85 86 | 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | - + - + | - match: '/(\w+)/' scope: rule.actionoption captures: 1: rule.optionname # Definitions and options |
︙ | |||
107 108 109 110 111 112 113 | 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | - + - + - + - + - + - + - + | # rule delimiters - match: '<<-|>>>' scope: keyword.action - match: '__also__' scope: keyword.condition.green - match: '__else__' scope: keyword.condition.red |
︙ | |||
198 199 200 201 202 203 204 | 198 199 200 201 202 203 204 205 206 207 208 209 210 | - + | # scope: constant.character.escape # - match: '(?:"|$)' # scope: punctuation.definition.string.end # pop: true line_comment: - meta_scope: comment.line |