Grammalecte  Check-in [e3c4cc6975]

Overview
Comment:[fr] autres tests pour les guillemets + commentaires
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk | fr
Files: files | file ages | folders
SHA3-256: e3c4cc6975e9a2d05f99da03d0d5fe4d82b7a25e413ab23d7a8100152602c734
User & Date: olr on 2017-11-10 20:45:39
Other Links: manifest | tags
Context
2017-11-10
20:59
[build] use Firefox Developper edition again check-in: 841c1372ef user: olr tags: build, trunk
20:45
[fr] autres tests pour les guillemets + commentaires check-in: e3c4cc6975 user: olr tags: fr, trunk
16:52
[core] merge spellsugg: much faster suggestion engine check-in: e6e44e506c user: olr tags: core, trunk
Changes

Modified gc_lang/fr/rules.grx from [10eeed75ab] to [20c78b7fa1].

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
...
561
562
563
564
565
566
567
568
569
570
571












































572
573
574
575
576
577
578
579
...
656
657
658
659
660
661
662






663
664
665
666
667
668
669
...
673
674
675
676
677
678
679






680
681
682
683
684
685
686
...
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
....
1078
1079
1080
1081
1082
1083
1084

1085
1086
1087
1088
1089
1090
1091
__<s>/typo(typo_guillemets_fermants_inverses)__  [  ]”(?=\w) <<- ->> " “"                           # Mettez des guillemets ouvrants plutôt que fermants.
__<s>/typo(typo_guillemets_ouvrants_inverses1)__ \w([«“][  ]) @@1 <<- -1>> " »|”"                   # Mettez des guillemets fermants plutôt qu’ouvrants.
__<s>/typo(typo_guillemets_ouvrants_inverses2)__ ([«“])[  ]*$ @@0 <<- -1>> " »|”"                   # Mettez des guillemets fermants plutôt qu’ouvrants.
__<s>/typo(typo_guillemets_ouvrants_inverses3)__ \w([  ][«“])[  ]*[!?,:;.…] @@1 <<- -1>> " »|”"     # Mettez des guillemets fermants plutôt qu’ouvrants.

TEST: « Le grand homme{{«}}
TEST: « La grande femme{{ «}} !
TEST: Eux et leurs{{ ”}}amis sont finis !
TEST: Vos amis{{“ }}et vous êtes finis !


# Cohérence des guillemets
__<s>/typo(typo_cohérence_guillemets1)__
    («)[^»“]+?(”)  @@0,$
    <<- not before(r"\w$") -1>> “                                                                   # Guillemet ouvrant différent du guillemet fermant (”).
    <<- not after(r"^\w") -2>> " »"                                                                 # Guillemet fermant différent du guillemet ouvrant («).
__<s>/typo(typo_cohérence_guillemets2)__
    (“)[^”«]+?(»)  @@0,$
    <<- not before(r"\w$") -1>> "« "                                                                # Guillemet ouvrant différent du guillemet fermant (»).
    <<- not after(r"^\w") -2>> ”                                                                    # Guillemet fermant différent du guillemet ouvrant (“).
__<s>/typo(typo_cohérence_guillemets3)__
    (“)[^”’“«]+?(’)(?!\w)  @@0,$
    <<- not before(r"\w$") -1>> "‘"                                                                 # Guillemet ouvrant différent du guillemet fermant (’).
    <<- -2>> ”                                                                                      # Guillemet fermant différent du guillemet ouvrant (“).
__<s>/typo(typo_cohérence_guillemets4)__
    (‘)[^’“«]+?(”)  @@0,$
    <<- not before(r"\w$") -1>> "“"                                                                 # Guillemet ouvrant différent du guillemet fermant (”).
    <<- not after(r"^\w") -2>> ’                                                                    # Guillemet fermant différent du guillemet ouvrant (‘).


TEST: C’est {{«}}stupide{{”}}.
TEST: Quel {{“}}emmerdeur{{»}}, ce gars-là.
TEST: Tu sais, {{‘}}ton ami{{”}} est venu.
TEST: Oui, je vois, mais c’est quand même un {{“}}salopard{{’}}.
TEST: « Je suis là.
TEST: — Oui, nous t’avons vu arriver. »
TEST: « J’en suis “malade”. »



# Tout contrôle des espaces doit se faire avant ce point.
# À partir d’ici, toute règle est susceptible de supprimer des caractères et les remplacer par des espaces ou des chaînes de longueur égale.




!!!
!!!
!!! Processeur: efface les ponctuations gênantes (URL, sigles, abréviations, IP, heures, etc.)      
!!!
!!!
................................................................................
__<i]/latex(p_latex1)__     \\[a-z]+ <<- ~>> *
__<i>/latex(p_latex2)__     \\[,;/\\] <<- ~>> *
__<s>/latex(p_latex3)__     \{(?:abstract|align|cases|center|description|enumerate|equation|figure|flush(?:left|right)|gather|minipage|multline|quot(?:ation|e)|SaveVerbatim|table|tabular|thebibliography|[vV]erbatim|verse|wrapfigure)\} <<- ~>> *


!!
!!
!!!! Typographie, virgules, espaces insécables, unités de mesure…                                   
!!
!!













































### Écritures épicènes (attention aux modifs: brainfuck d’intensité non négligeable)
# La désambiguïsation est faite lors de la deuxième passe

__[i](typo_écriture_épicène_tous_toutes)__
    tous?[.(/·–—-]te[.)/·–—-]?s
    <<- option("typo") ->> tous et toutes|toutes et tous                                            # Écriture épicène dystypographique et imprononçable.
    <<- ~>> =normalizeInclusiveWriting(\0)

................................................................................
    <<- option("typo") and (\1 == "un" or \1 == "Un") ->> un ou une|une ou un                       # Écriture épicène imprononçable. Préférez écrire lisiblement.
    <<- __else__ and option("typo") and not \0.endswith("·e") ->> \1·e                              # Écriture épicène. Utilisez un point médian.
    <<- ~>> \1-e

TEST: je suis {{déconsidéré.e}} par ma hiérarchie.
TEST: il faut en parler à l’{{auteur(e)}} et à son agent.








# Majuscules après un point
__[s]/maj(majuscule_après_point)__
    ({w_2})[.] ([a-zéàèî]\w*)  @@0,$
    <<- not re.search("(?i)^(?:etc|[A-Z]|chap|cf|fig|hab|litt|circ|coll|r[eé]f|étym|suppl|bibl|bibliogr|cit|op|vol|déc|nov|oct|janv|juil|avr|sept)$", \1)
    and morph(\1, ":", False) and morph(\2, ":", False)
    -2>> =\2.capitalize()                                                                           # Après un point, une majuscule est généralement requise.
................................................................................

__[s]/maj(majuscule_en_début_phrase)__
    ^ *([a-zéèâàô][\w-]+)  @@$
    <<- after("\w\w[.] +\w+") -1>> =\1.capitalize()                                                 # Majuscule en début de phrase, sauf éventuellement lors d’une énumération.

TEST: {{je}} suis disponible quand tu veux. Mais pas aujourd’hui.








## virgules manquantes
__[i>/virg(virgule_manquante_avant_etc)__   {w_1}( etc[.])  @@$ <<- -1>> , etc.                     # Avant « etc. », il faut mettre une virgule.
__[i>/virg(virgule_manquante_avant_car)__
    ({w_1})( car)(?= (?:j[e’]|tu|ils?|nous|vous|elles?|on|les?|la|ces?|des?|cette|[mts](?:on|a))\b)  @@0,$
    <<- not morph(\1, ":[DR]", False) -2>> , car
    # 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
................................................................................
    # 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

TEST: Un chien, un chat{{ etc.}}                                          ->> , etc.
TEST: Je suis fatigué{{ car}} ils ont joué toute la nuit.                 ->> , car
TEST: Je suis fatigué{{ mais}} il a joué toute la nuit.                   ->> , mais


#__virg__  , ({w_1})
#   <<- morphex(\1, ":[123][sp]", ":(?:N|E|A|W|G|M[12])") and not before(",")
#   ->> =0[1:]    # Un verbe ne doit pas être séparé du sujet, sauf éventuellement par une incise. (Et ce verbe n’est pas non plus un impératif.) [Sac à bugs]
__<s>/virg(virgule_point_fin_dialogue)__    ([.] » )[a-zéà]  @@0 <<- -1>> " », | » "
    # Ou il faut une virgule (exemple : « Je viens », dit-il). Ou le point est superflu. Ou il faut une majuscule sur le mot suivant.
__<s>/virg(virgule_fin_dialogue)__          (, »,? )[a-zéà]  @@0 <<- -1>> " », | » "                # Virgule mal placée ou superflue.

TEST: « Ça suffit{{. » }}dit-elle.
TEST: « J’en ai plus qu’assez{{, » }}dis-je.
TEST: {{Julien}} donne-moi le sel.
TEST: dès son premier rendez-vous au centre
TEST: Depuis combien de temps fumez-vous ?

................................................................................
    ({w_4})[  ,.;!?:].*[  ](\1)  @@0,$
    <<- not morph(\1, ":(?:G|V0)|>(?:t(?:antôt|emps|rès)|loin|souvent|parfois|quelquefois|côte|petit|même) ", False) and not \1[0].isupper()
    -2>> _                                                      # Dans ce paragraphe, répétition de « \1 » (à gauche).
    <<- __also__ -1>> _                                         # Dans ce paragraphe, répétition de « \1 » (à droite).

TEST: __redon1__ Tu es son {{avenir}}. Et lui aussi est ton {{avenir}}.
TEST: __redon1__ Car parfois il y en a. Mais parfois il n’y en a pas.



!!!
!!!
!!! Processeur: Dernier nettoyage avant coupure du paragraphe en phrases                            
!!!
!!!







|
|


<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<

|
<
<
<
<
<
<
<
|
<
>


|
>







 







|



>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|







 







>
>
>
>
>
>







 







>
>
>
>
>
>







 







|
|
|
|
|
<







 







>







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
...
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
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
...
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
...
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
...
723
724
725
726
727
728
729
730
731
732
733
734

735
736
737
738
739
740
741
....
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
__<s>/typo(typo_guillemets_fermants_inverses)__  [  ]”(?=\w) <<- ->> " “"                           # Mettez des guillemets ouvrants plutôt que fermants.
__<s>/typo(typo_guillemets_ouvrants_inverses1)__ \w([«“][  ]) @@1 <<- -1>> " »|”"                   # Mettez des guillemets fermants plutôt qu’ouvrants.
__<s>/typo(typo_guillemets_ouvrants_inverses2)__ ([«“])[  ]*$ @@0 <<- -1>> " »|”"                   # Mettez des guillemets fermants plutôt qu’ouvrants.
__<s>/typo(typo_guillemets_ouvrants_inverses3)__ \w([  ][«“])[  ]*[!?,:;.…] @@1 <<- -1>> " »|”"     # Mettez des guillemets fermants plutôt qu’ouvrants.

TEST: « Le grand homme{{«}}
TEST: « La grande femme{{ «}} !
TEST: Eux et leurs{{ ”}}amis{{”}} sont finis !
TEST: Vos {{“}}amis{{“ }}et vous êtes finis !




















#







#

# NOTE
# Tout contrôle des espaces doit se faire avant ce point.
# À partir d’ici, toute règle est susceptible de supprimer des caractères et les remplacer par des espaces ou des chaînes de longueur égale.
#
#


!!!
!!!
!!! Processeur: efface les ponctuations gênantes (URL, sigles, abréviations, IP, heures, etc.)      
!!!
!!!
................................................................................
__<i]/latex(p_latex1)__     \\[a-z]+ <<- ~>> *
__<i>/latex(p_latex2)__     \\[,;/\\] <<- ~>> *
__<s>/latex(p_latex3)__     \{(?:abstract|align|cases|center|description|enumerate|equation|figure|flush(?:left|right)|gather|minipage|multline|quot(?:ation|e)|SaveVerbatim|table|tabular|thebibliography|[vV]erbatim|verse|wrapfigure)\} <<- ~>> *


!!
!!
!!!! Cohérence des guillemets                                                                        
!!
!!

__<s>/typo(typo_cohérence_guillemets1)__
    («)[^»“]+?(”)  @@0,$
    <<- not before(r"\w$") -1>> “                                                                   # Guillemet ouvrant différent du guillemet fermant (”).
    <<- not after(r"^\w") -2>> " »"                                                                 # Guillemet fermant différent du guillemet ouvrant («).
__<s>/typo(typo_cohérence_guillemets2)__
    (“)[^”«]+?(»)  @@0,$
    <<- not before(r"\w$") -1>> "« "                                                                # Guillemet ouvrant différent du guillemet fermant (»).
    <<- not after(r"^\w") -2>> ”                                                                    # Guillemet fermant différent du guillemet ouvrant (“).
__<s>/typo(typo_cohérence_guillemets3)__
    (“)[^”’“«]+?(’)(?!\w)  @@0,$
    <<- not before(r"\w$") -1>> "‘"                                                                 # Guillemet ouvrant différent du guillemet fermant (’).
    <<- -2>> ”                                                                                      # Guillemet fermant différent du guillemet ouvrant (“).
__<s>/typo(typo_cohérence_guillemets4)__
    (‘)[^’“«]+?(”)  @@0,$
    <<- not before(r"\w$") -1>> "“"                                                                 # Guillemet ouvrant différent du guillemet fermant (”).
    <<- not after(r"^\w") -2>> ’                                                                    # Guillemet fermant différent du guillemet ouvrant (‘).

TEST: C’est {{«}}stupide{{”}}.
TEST: Quel {{“}}emmerdeur{{»}}, ce gars-là.
TEST: Tu sais, {{‘}}ton ami{{”}} est venu.
TEST: Oui, je vois, mais c’est quand même un {{“}}salopard{{’}}.
TEST: « Je suis là.
TEST: — Oui, nous t’avons vu arriver. »
TEST: « J’en suis “malade”. »


__[i]/typo(typo_guillemets_ouvrants_non_fermés)__
    (“)\w[^”"»]+$  @@0
    <<- -1>> _                                                                                      # Guillemets fermants introuvables dans la suite du paragraphe.
__[i]/typo(typo_guillemets_fermants_non_ouverts)__
    ^[^“„«"]+\w(”)  @@$
    <<- -1>> _                                                                                      # Guillemets ouvrants introuvables dans ce paragraphe.

TEST: C’était mon affaire{{”}}.
TEST: C’est {{“}}compliqué.



!!
!!
!!!! Écritures épicènes dystypographiques                                                           
!!
!!

# (attention aux modifs: brainfuck d’intensité non négligeable)
# La désambiguïsation est faite lors de la deuxième passe

__[i](typo_écriture_épicène_tous_toutes)__
    tous?[.(/·–—-]te[.)/·–—-]?s
    <<- option("typo") ->> tous et toutes|toutes et tous                                            # Écriture épicène dystypographique et imprononçable.
    <<- ~>> =normalizeInclusiveWriting(\0)

................................................................................
    <<- option("typo") and (\1 == "un" or \1 == "Un") ->> un ou une|une ou un                       # Écriture épicène imprononçable. Préférez écrire lisiblement.
    <<- __else__ and option("typo") and not \0.endswith("·e") ->> \1·e                              # Écriture épicène. Utilisez un point médian.
    <<- ~>> \1-e

TEST: je suis {{déconsidéré.e}} par ma hiérarchie.
TEST: il faut en parler à l’{{auteur(e)}} et à son agent.


!!
!!
!!!! Majuscules manquantes                                                                          
!!
!!

# Majuscules après un point
__[s]/maj(majuscule_après_point)__
    ({w_2})[.] ([a-zéàèî]\w*)  @@0,$
    <<- not re.search("(?i)^(?:etc|[A-Z]|chap|cf|fig|hab|litt|circ|coll|r[eé]f|étym|suppl|bibl|bibliogr|cit|op|vol|déc|nov|oct|janv|juil|avr|sept)$", \1)
    and morph(\1, ":", False) and morph(\2, ":", False)
    -2>> =\2.capitalize()                                                                           # Après un point, une majuscule est généralement requise.
................................................................................

__[s]/maj(majuscule_en_début_phrase)__
    ^ *([a-zéèâàô][\w-]+)  @@$
    <<- after("\w\w[.] +\w+") -1>> =\1.capitalize()                                                 # Majuscule en début de phrase, sauf éventuellement lors d’une énumération.

TEST: {{je}} suis disponible quand tu veux. Mais pas aujourd’hui.


!!
!!
!!!! Typographie, virgules, espaces insécables, unités de mesure…                                   
!!
!!

## virgules manquantes
__[i>/virg(virgule_manquante_avant_etc)__   {w_1}( etc[.])  @@$ <<- -1>> , etc.                     # Avant « etc. », il faut mettre une virgule.
__[i>/virg(virgule_manquante_avant_car)__
    ({w_1})( car)(?= (?:j[e’]|tu|ils?|nous|vous|elles?|on|les?|la|ces?|des?|cette|[mts](?:on|a))\b)  @@0,$
    <<- not morph(\1, ":[DR]", False) -2>> , car
    # 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
................................................................................
    # 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

TEST: Un chien, un chat{{ etc.}}                                          ->> , etc.
TEST: Je suis fatigué{{ car}} ils ont joué toute la nuit.                 ->> , car
TEST: Je suis fatigué{{ mais}} il a joué toute la nuit.                   ->> , mais



__<s>/virg(virgule_point_fin_dialogue)__
    ([.] » )[a-zéà]  @@0 <<- -1>> " », | » "             # Ou il faut une virgule (exemple : « Je viens », dit-il). Ou le point est superflu. Ou il faut une majuscule sur le mot suivant.
__<s>/virg(virgule_fin_dialogue)__
    (, »,? )[a-zéà]  @@0 <<- -1>> " », | » "                                            # Virgule mal placée ou superflue.


TEST: « Ça suffit{{. » }}dit-elle.
TEST: « J’en ai plus qu’assez{{, » }}dis-je.
TEST: {{Julien}} donne-moi le sel.
TEST: dès son premier rendez-vous au centre
TEST: Depuis combien de temps fumez-vous ?

................................................................................
    ({w_4})[  ,.;!?:].*[  ](\1)  @@0,$
    <<- not morph(\1, ":(?:G|V0)|>(?:t(?:antôt|emps|rès)|loin|souvent|parfois|quelquefois|côte|petit|même) ", False) and not \1[0].isupper()
    -2>> _                                                      # Dans ce paragraphe, répétition de « \1 » (à gauche).
    <<- __also__ -1>> _                                         # Dans ce paragraphe, répétition de « \1 » (à droite).

TEST: __redon1__ Tu es son {{avenir}}. Et lui aussi est ton {{avenir}}.
TEST: __redon1__ Car parfois il y en a. Mais parfois il n’y en a pas.



!!!
!!!
!!! Processeur: Dernier nettoyage avant coupure du paragraphe en phrases                            
!!!
!!!