1 # -*- coding: utf-8 -*-
4 from parseur import FactNode
5 from dictErreurs import jdcSet
7 from dictErreurs import EcritErreur
11 #on n'a qu'un mocle par commande.
12 #en fin de traitement, on remet à jour l'arbre syntaxique (lineno,colno,etc.)
14 #--------------------------------------------------------------------------------
15 def renameMotCle(jdc,command,mocle,new_name, erreur=0,ensemble=regles.SansRegle):
16 #--------------------------------------------------------------------------------
17 if command not in jdcSet : return
19 for c in jdc.root.childNodes:
20 if c.name != command:continue
21 for mc in c.childNodes:
22 if mc.name != mocle:continue
23 if ensemble.verif(c) == 0 : continue
25 if debug:print "Renommage de:",c.name,mc.name,mc.lineno,mc.colno
27 EcritErreur((command,mocle),c.lineno)
29 logging.info("Renommage de: %s %s ligne %d en %s",c.name,mc.name,mc.lineno,new_name)
30 s=jdc.getLines()[mc.lineno-1]
31 jdc.getLines()[mc.lineno-1]=s[:mc.colno]+new_name+s[mc.colno+len(mocle):]
32 diff=len(new_name) - len(mocle)
33 decaleLignesdeNBlancs(jdc,mc.lineno,mc.endline-1,diff)
35 if boolChange : jdc.reset(jdc.getSource())
37 #------------------------------------------------------
38 def renameMotCleAvecErreur(jdc,command,mocle,new_name):
39 #------------------------------------------------------
40 if command not in jdcSet : return
41 renameMotCle(jdc,command,mocle,new_name,1,regles.SansRegle)
43 #--------------------------------------------------------------------------
44 def renameMotCleSiRegle(jdc,command,mocle,new_name,liste_regles, erreur=0):
45 #--------------------------------------------------------------------------
46 if command not in jdcSet : return
47 mesRegles=regles.ensembleRegles(liste_regles)
48 renameMotCle(jdc,command,mocle,new_name, erreur,mesRegles)
50 #-------------------------------------------
51 def renameOper(jdc,command,new_name):
52 #-------------------------------------------
53 if command not in jdcSet : return
56 for c in jdc.root.childNodes:
57 if c.name != command:continue
58 if debug:print "Renommage de:",c.name,c.lineno,c.colno
59 logging.info("Renommage de: %s ligne %d en %s",c.name,c.lineno,new_name)
61 s=jdc.getLines()[c.lineno-1]
62 jdc.getLines()[c.lineno-1]=s[:c.colno]+new_name+s[c.colno+len(command):]
63 diff=len(new_name) - len(command)
64 decaleLignesdeNBlancs(jdc,c.lineno,c.endline,diff)
65 if boolChange : jdc.reset(jdc.getSource())
67 #----------------------------------------------------------
68 def decaleLignesdeNBlancs(jdc,premiere,derniere,nbBlanc):
69 #----------------------------------------------------------
71 while ligne < derniere :
72 s=jdc.getLines()[ligne]
74 jdc.getLines()[ligne] = nbBlanc*" " + s
76 toutblancs=-1*nbBlanc*" "
77 if jdc.getLines()[ligne][0:-1*nbBlanc] == toutblancs:
78 jdc.getLines()[ligne] = s[-1*nbBlanc:]
81 #---------------------------------------------------------------------------------------------
82 def renameMotCleInFact(jdc,command,fact,mocle,new_name, ensemble=regles.SansRegle, erreur=0):
83 #---------------------------------------------------------------------------------------------
84 if command not in jdcSet : return
86 for c in jdc.root.childNodes:
87 if c.name != command:continue
88 for mc in c.childNodes:
89 if mc.name != fact:continue
94 for n in ll.childNodes:
95 if n.name != mocle:continue
96 if ensemble.verif(c) == 0 : continue
97 s=jdc.getLines()[n.lineno-1]
98 jdc.getLines()[n.lineno-1]=s[:n.colno]+new_name+s[n.colno+len(mocle):]
101 EcritErreur((command,fact,mocle),c.lineno)
103 logging.info("Renommage de: %s, %s, %s, en %s",n.name,n.lineno,n.colno,new_name)
105 if boolChange : jdc.reset(jdc.getSource())
107 #--------------------------------------------------------------------------
108 def renameMotCleInFactSiRegle(jdc,command,fact,mocle,new_name,liste_regles):
109 #--------------------------------------------------------------------------
110 if command not in jdcSet : return
111 mesRegles=regles.ensembleRegles(liste_regles)
112 renameMotCleInFact(jdc,command,fact,mocle,new_name,mesRegles)
114 #-----------------------------------------------------------------
115 def renameCommande(jdc,command,new_name,ensemble=regles.SansRegle):
116 #-----------------------------------------------------------------
117 # nom de la commande "ancien format" , nom de la commande " nouveau format "
118 if command not in jdcSet : return
122 if ensemble != regles.SansRegle :
123 logging.info("Traitement de %s renomme en %s sous conditions", command, new_name)
125 logging.info("Traitement de %s renomme en %s ", command, new_name)
126 for c in jdc.root.childNodes:
127 if c.name != command:continue
128 if ensemble.verif(c) == 0 : continue
130 if debug:print "Renommage de:",c.name,new_name ,c.lineno,c.colno
131 logging.info("Renommage de: %s en ligne %d en %s",c.name,c.lineno,new_name)
132 s=jdc.getLines()[c.lineno-1]
133 jdc.getLines()[c.lineno-1]=s[:c.colno]+new_name+s[c.colno+len(command):]
135 if boolChange : jdc.reset(jdc.getSource())
137 #-----------------------------------------------------------
138 def renameCommandeSiRegle(jdc,command,new_name,liste_regles):
139 #-----------------------------------------------------------
141 if command not in jdcSet : return
142 mesRegles=regles.ensembleRegles(liste_regles)
143 renameCommande(jdc,command,new_name,mesRegles)