up format typo
This commit is contained in:
parent
2f4045a98d
commit
6af9d635de
Binary file not shown.
|
@ -1 +1,2 @@
|
|||
|
||||
/home/poule/encrypted/stockage-syncable/www/development/html/book_generator/récits_jeanine
|
||||
|
|
|
@ -9,17 +9,40 @@ import re
|
|||
with open('livre.org', 'r') as f:
|
||||
contenu = f.read()
|
||||
|
||||
# Corriger les phrases sans majuscules
|
||||
contenu_corrige = re.sub(r"^([a-z])", lambda m: m.group(1).upper(), contenu, flags=re.MULTILINE)
|
||||
nb_maj = sum(1 for m in re.finditer(r"^([a-z])", contenu)) - sum(1 for m in re.finditer(r"^([a-z])", contenu_corrige))
|
||||
if nb_maj > 0:
|
||||
print(f" Ajout de majuscules aux débuts de phrases : {nb_maj} modification(s)")
|
||||
def corriger_typo(contenu):
|
||||
# Corriger les majuscules au début des phrases
|
||||
contenu = re.sub(r'(^|\.\s+|\n\s*)([a-z])', lambda x: x.group(1) + x.group(2).upper(), contenu)
|
||||
|
||||
# Supprimer les sauts de ligne multiples
|
||||
contenu = re.sub(r'\n{3,}', '\n\n', contenu)
|
||||
|
||||
# Ajouter des espaces autour de la ponctuation
|
||||
contenu = re.sub(r'([.,;:!?])([^\s])', r'\1 \2', contenu)
|
||||
|
||||
# Corriger les entêtes orgmode (remplacer ": " par ":")
|
||||
contenu = re.sub(r"^(#\+[A-Z_]+): ", r"\1:", contenu, flags=re.MULTILINE)
|
||||
|
||||
return contenu
|
||||
|
||||
|
||||
def comparer_textes(texte_original, texte_corrige):
|
||||
# Compare les deux textes et retourne le nombre de différences
|
||||
nb_sauts = len(re.findall(r'\n{3,}', texte_original)) - len(re.findall(r'\n{3,}', texte_corrige))
|
||||
nb_entetes = len(re.findall(r"^#\+[A-Z_]+: ", texte_original)) - len(re.findall(r"^#\+[A-Z_]+: ", texte_corrige))
|
||||
nb_espaces = len(re.findall(r"([.,;:!?])( )?", texte_original)) - len(re.findall(r"([.,;:!?])( )?", texte_corrige))
|
||||
nb_espaces += len(re.findall(r"( )([.,;:!?])", texte_original)) - len(re.findall(r"( )([.,;:!?])", texte_corrige))
|
||||
nb_maj = sum(1 for m in re.finditer(r"^([a-z])", contenu)) - sum(1 for m in re.finditer(r"^([a-z])", contenu_corrige))
|
||||
if nb_maj > 0:
|
||||
print(f" Ajout de majuscules aux débuts de phrases : {nb_maj} modification(s)")
|
||||
# Afficher le rapport des modifications
|
||||
print("\nRapport des modifications :")
|
||||
print(f"- Sauts de ligne supprimés : {nb_sauts}")
|
||||
print(f"- Entêtes corrigées : {nb_entetes}")
|
||||
print(f"- Espacements corrigés : {nb_espaces}")
|
||||
print(f"Total des modifications : {nb_sauts + nb_entetes + nb_espaces}\n")
|
||||
|
||||
return nb_maj, nb_sauts, nb_entetes, nb_espaces
|
||||
|
||||
# Corriger les sauts de ligne consécutifs
|
||||
contenu_corrige = re.sub(r'\n{3,}', '\n\n', contenu_corrige)
|
||||
nb_sauts = len(re.findall(r'\n{3,}', contenu)) - len(re.findall(r'\n{3,}', contenu_corrige))
|
||||
if nb_sauts > 0:
|
||||
print(f" Suppression des sauts de ligne consécutifs : {nb_sauts} modification(s)")
|
||||
|
||||
# Corriger les espaces manquants autour de certaines ponctuations
|
||||
contenu_corrige = re.sub(r"([.,;:!?])( )?", r"\1 ", contenu_corrige)
|
||||
|
@ -36,10 +59,22 @@ nb_espaces = len(re.findall(r"([.,;:!?])( )?", contenu)) - len(re.findall(r"([.,
|
|||
if nb_espaces > 0:
|
||||
print(f" Ajout d'espaces autour de certaines ponctuations : {nb_espaces} modification(s)")
|
||||
|
||||
# Sauvegarder le fichier livre.org corrigé
|
||||
with open('livre.org', 'w') as f:
|
||||
f.write(contenu_corrige)
|
||||
|
||||
# Faire un rapport des modifications apportées
|
||||
if nb_maj == 0 and nb_sauts == 0 and nb_espaces == 0:
|
||||
print("🎉 Pas de modifications à apporter !")
|
||||
def sauvegarder_si_modifie(contenu_corrige, nb_maj, nb_sauts, nb_espaces):
|
||||
# Faire un rapport des modifications apportées
|
||||
if nb_maj == 0 and nb_sauts == 0 and nb_espaces == 0:
|
||||
print("🎉 Pas de modifications à apporter !")
|
||||
# Ne sauvegarder que s'il y a des modifications
|
||||
if nb_maj > 0 or nb_sauts > 0 or nb_espaces > 0:
|
||||
print("💾 Sauvegarde des modifications...")
|
||||
with open('livre.org', 'w') as f:
|
||||
f.write(contenu_corrige)
|
||||
else:
|
||||
print("Aucune modification à sauvegarder")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
contenu_corrige = corriger_typo(contenu)
|
||||
nb_maj, nb_sauts, nb_entetes, nb_espaces = comparer_textes(contenu, contenu_corrige)
|
||||
sauvegarder_si_modifie(contenu_corrige, nb_maj, nb_sauts, nb_espaces)
|
||||
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
import unittest
|
||||
import re
|
||||
|
||||
# Supposons que format_typo.py soit dans le même répertoire
|
||||
from format_typo import corriger_typo
|
||||
|
||||
def test_correction_entetes_org(self):
|
||||
texte_avec_entetes = """* chapitre 1 :titre:
|
||||
* chapitre 2 : titre :"""
|
||||
texte_corrige = corriger_typo(texte_avec_entetes)
|
||||
self.assertEqual(texte_corrige, """* chapitre 1 :titre:
|
||||
* chapitre 2 :titre:""")
|
||||
|
||||
|
||||
class TestFormatTypo(unittest.TestCase):
|
||||
def setUp(self):
|
||||
# Texte Org-mode fictif pour les tests
|
||||
self.texte_org = """
|
||||
* chapitre 1
|
||||
ceci est un texte sans majuscule au début de la phrase.
|
||||
|
||||
* chapitre 2
|
||||
il y a trop de sauts de ligne ici.
|
||||
|
||||
|
||||
* chapitre 3
|
||||
il manque des espaces autour de la ponctuation:voici un exemple.
|
||||
"""
|
||||
|
||||
def test_correction_majuscules(self):
|
||||
texte_corrige = corriger_typo(self.texte_org)
|
||||
self.assertIn("Ceci est un texte sans majuscule", texte_corrige)
|
||||
|
||||
def test_correction_sauts_de_ligne(self):
|
||||
texte_corrige = corriger_typo(self.texte_org)
|
||||
self.assertNotIn("\n\n\n", texte_corrige)
|
||||
|
||||
def test_correction_espaces_ponctuation(self):
|
||||
texte_corrige = corriger_typo(self.texte_org)
|
||||
self.assertIn(": voici un exemple.", texte_corrige)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
Loading…
Reference in New Issue