1 # -*- coding: utf-8 -*-
3 from parseur import FactNode
7 #on n'a qu'un mocle par commande. On peut donc supprimer le mocle sans trop de précautions (a part iterer a l'envers sur les commandes)
8 #avant de supprimer un autre mocle, on remet à jour l'arbre syntaxique (lineno,colno,etc.)
9 def removemocle(jdc,command,mocle):
10 #on itere sur les commandes a l'envers pour ne pas polluer les numeros de ligne avec les modifications
11 commands= jdc.root.childNodes[:]
14 if c.name != command:continue
15 for mc in c.childNodes:
16 if mc.name != mocle:continue
19 jdc.reset(jdc.getSource())
21 def removemc(jdc,c,mc):
22 if debug:print "Suppression de:",c.name,mc.name,mc.lineno,mc.colno,mc.endline,mc.endcol
23 logging.info("Suppression de: %s, %s, %s, %s, %d, %d",c.name,mc.name,mc.lineno,mc.colno,mc.endline,mc.endcol)
24 if mc.endline > mc.lineno:
25 if debug:print "mocle sur plusieurs lignes--%s--" % jdc.getLines()[mc.lineno-1][mc.colno:]
26 jdc.getLines()[mc.lineno-1]=jdc.getLines()[mc.lineno-1][:mc.colno]
27 jdc.getLines()[mc.endline-1]=jdc.getLines()[mc.endline-1][mc.endcol:]
28 #attention : supprimer les lignes à la fin
29 jdc.getLines()[mc.lineno:mc.endline-1]=[]
31 if debug:print "mocle sur une ligne--%s--" % jdc.getLines()[mc.lineno-1][mc.colno:mc.endcol]
32 s=jdc.getLines()[mc.lineno-1]
33 jdc.getLines()[mc.lineno-1]=s[:mc.colno]+s[mc.endcol:]
34 fusionne(jdc,mc.lineno-1)
35 jdc.reset(jdc.getSource())
37 def removemocleinfact(jdc,command,fact,mocle):
38 #on itere sur les commandes a l'envers pour ne pas polluer les numeros de ligne avec les modifications
39 commands= jdc.root.childNodes[:]
42 if c.name != command:continue
43 for mc in c.childNodes:
44 if mc.name != fact:continue
48 for n in ll.childNodes:
49 if n.name != mocle:continue
52 jdc.reset(jdc.getSource())
54 def fusionne(jdc,numLigne):
56 texte=jdc.getLines()[numLigne]
58 while (index < len(texte)) :
59 if texte[index] not in (" ",",",")",";","\n") :
65 jdc.joinLineandNext(numLigne)