code plus agréable
Cette révision appartient à :
@@ -1,10 +1,23 @@
|
|||||||
import os, shutil
|
import os, shutil
|
||||||
|
|
||||||
def extraire_caml(nf_tex, mlref, nf_texo, tag) :
|
def nomFonctionCaml(ligne) :
|
||||||
|
lstrip = ligne.strip()
|
||||||
|
if lstrip.startswith("let") :
|
||||||
|
nomfonc = lstrip[4:]
|
||||||
|
if nomfonc.startswith("rec ") :
|
||||||
|
nomfonc = nomfonc[4:]
|
||||||
|
nomfonc = nomfonc.split()[0]
|
||||||
|
return nomfonc.split("=")[0]
|
||||||
|
else :
|
||||||
|
return None
|
||||||
|
|
||||||
|
def extraireCaml(nf_tex, mlref, tag) :
|
||||||
nf_tex = nf_tex.replace("file://", "")
|
nf_tex = nf_tex.replace("file://", "")
|
||||||
|
nf_tex_bak = nf_tex + ".bak"
|
||||||
|
shutil.copy2(nf_tex, nf_tex_bak)
|
||||||
nf_ml = os.path.join(os.path.dirname(nf_tex), mlref)
|
nf_ml = os.path.join(os.path.dirname(nf_tex), mlref)
|
||||||
nf_texo = nf_texo.replace("file://", "")
|
contenu = open(nf_tex).readlines()
|
||||||
output_tex = open(nf_texo, "w")
|
output_tex = open(nf_tex, "w")
|
||||||
output_ml = open(nf_ml, "w")
|
output_ml = open(nf_ml, "w")
|
||||||
incode = False
|
incode = False
|
||||||
nomfonc = ""
|
nomfonc = ""
|
||||||
@@ -17,7 +30,8 @@ def extraire_caml(nf_tex, mlref, nf_texo, tag) :
|
|||||||
else :
|
else :
|
||||||
compteursNoms[s] += 1
|
compteursNoms[s] += 1
|
||||||
return "{}__{}".format(s, compteursNoms[s])
|
return "{}__{}".format(s, compteursNoms[s])
|
||||||
for l in open(nf_tex) :
|
try :
|
||||||
|
for l in contenu :
|
||||||
lstrip = l.strip()
|
lstrip = l.strip()
|
||||||
if lstrip.startswith(r"\begin{"+tag+"}") :
|
if lstrip.startswith(r"\begin{"+tag+"}") :
|
||||||
incode = True
|
incode = True
|
||||||
@@ -30,14 +44,10 @@ def extraire_caml(nf_tex, mlref, nf_texo, tag) :
|
|||||||
if nomfonc == "" :
|
if nomfonc == "" :
|
||||||
if lstrip == "" :
|
if lstrip == "" :
|
||||||
continue
|
continue
|
||||||
if "let" in lstrip :
|
nomfonc = nomFonctionCaml(lstrip)
|
||||||
nomfonc = l[4:]
|
if nomfonc is None :
|
||||||
if nomfonc.startswith("rec ") :
|
nomfonc = "anon"
|
||||||
nomfonc = nomfonc[4:]
|
|
||||||
nomfonc = nomfonc.split()[0]
|
|
||||||
nomfonc = setNom(nomfonc)
|
nomfonc = setNom(nomfonc)
|
||||||
else :
|
|
||||||
nomfonc = setNom("anon")
|
|
||||||
output_ml.write("(*** " + nomfonc + " ***)\n")
|
output_ml.write("(*** " + nomfonc + " ***)\n")
|
||||||
if lstrip == r"\end{"+tag+"}" :
|
if lstrip == r"\end{"+tag+"}" :
|
||||||
output_ml.write("(*** " + nomfonc + "_fin ***)\n\n")
|
output_ml.write("(*** " + nomfonc + "_fin ***)\n\n")
|
||||||
@@ -50,21 +60,6 @@ def extraire_caml(nf_tex, mlref, nf_texo, tag) :
|
|||||||
output_ml.write(l)
|
output_ml.write(l)
|
||||||
else :
|
else :
|
||||||
output_tex.write(l)
|
output_tex.write(l)
|
||||||
|
finally :
|
||||||
def caml(s, start=0) :
|
output_ml.close()
|
||||||
try :
|
output_tex.close()
|
||||||
pos_let = s.index("\nlet", start)
|
|
||||||
fin = s.index(r";;", pos_let)
|
|
||||||
print(s[pos_let:fin+3])
|
|
||||||
if s[pos_let+4:].startswith(" rec") :
|
|
||||||
delta = 5
|
|
||||||
else :
|
|
||||||
delta = 0
|
|
||||||
pos_nom = s.index(" ", pos_let + delta) + 1
|
|
||||||
fin_nom = s.index(" ", pos_nom)
|
|
||||||
nom = s[pos_nom:fin_nom]
|
|
||||||
print(nom)
|
|
||||||
news = s[:pos_let] + "(*** " + nom + " ***)" + s[pos_let:fin+3] + "(*** " + nom + "_fin ***)\n" + s[fin+3:]
|
|
||||||
return caml(news, fin + 3 + len("(*** " + nom + " ***)")+ len("(*** " + nom + "_fin ***)\n"))
|
|
||||||
except ValueError :
|
|
||||||
return s
|
|
||||||
Référencer dans un nouveau ticket
Bloquer un utilisateur