-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquality_check.py
56 lines (53 loc) · 2.37 KB
/
quality_check.py
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
import os
liste_dossiers = ["homiliae", "sermones_legendae", "scriptura"]
liste_chaines_interdites = ["« ", " »", " ;", " :", " ?", " !", "'", "oe", "/", " ’", "’ ", "1", "0",
"A ", "Evang", "Eglise", "Elie", "Sabbat", "ecriture", "écriture", "Ecriture", "Eve", "Etienne",
"sprit-Saint", "aint Esprit", "sprit-saint", "aint esprit",
"christ", "jésus", "jesus", "Notre Seigneur", "otre-",
"Ange", "Archange", "cène", "cene", "gentils"]
longueur_max_lignes = 90
largeur_tab = 4
def erreur(dossier, fichier, err, ligne):
print(dossier+"/"+fichier+" "+err+" "+str(ligne+1))
for dossier in liste_dossiers :
for fichier in [f for f in os.listdir(dossier) if f[-4:]==".tex"] :
try:
lignes = open(os.path.join(dossier, fichier), encoding='utf-8').readlines()
for (i,l) in enumerate(lignes):
for x in liste_chaines_interdites:
if x in l:
erreur(dossier, fichier, x, i)
if (i==0):# verification specifique a la premiere ligne
if l[0]=='«':
if l[1]=='“':
y=2
else:
y=1
else:
y=0 # y est la position du premier caractère alphabétique attendu
if (not l[y].isupper()): # le texte ne commence pas par une majuscule
erreur(dossier, fichier, "incipit", i)
if len(l) == 1: # ligne vide, == "\n"
erreur(dossier, fichier, "vide", i)
if l[-1] != '\n': # manque un retour en fin de dernière ligne
erreur(dossier, fichier, "sans retour chariot", i)
# on regarde maintenant la ligne sans son caractère de fin
l = l.removesuffix('\n')
# on compte les tabs au début de la ligne, puis on les enlève
n_tabs = len(l)-len(l.lstrip('\t'))
l = l.lstrip('\t')
if n_tabs > 2: # trop de tabs en début de ligne
erreur(dossier, fichier, "tabs", i)
# ligne trop longue
if (len(l) + largeur_tab * n_tabs) > longueur_max_lignes:
erreur(dossier, fichier, "longueur", i)
# présence d'espaces en début ou fin de ligne, autre que des tabs en début de ligne
if l.strip() != l :
erreur(dossier, fichier, "espaces", i)
# cas où la ligne initiale ne contient que des tabs
if l == "" :
erreur(dossier, fichier, "tab seul", i)
except Exception as e:
print(e)
print(dossier+"/"+fichier)
input()