liste de chaines de caractères dans une syntaxe représentative d'un
jeu de commandes en un texte présentable
"""
-import types,string
+import types,string,re
class Formatage :
"""
self.l_max = 72
def formate_jdc(self):
+ comment=re.compile("\n#")
+ commentaireavant=0
for etape in self.l_jdc:
self.count = self.count+1
self.texte_etape = ''
# L'etape est deja sous forme de chaine de caracteres
self.indent=[]
self.texte_etape = etape
- self.jdc_fini = self.jdc_fini + '\n' + self.texte_etape
- #on enleve la premiere ligne si elle est blanche :
+
+ m=comment.match(self.texte_etape)
+ # si ce n est pas la premiere ligne
+ if self.jdc_fini != "" :
+ # si il n y avait pas de commentaire avant on met un saut de ligne
+ if commentaireavant == 0 :
+ self.jdc_fini = self.jdc_fini + '\n' + self.texte_etape
+ else :
+ self.jdc_fini = self.jdc_fini + self.texte_etape
+ # si c est la premiere ligne
+ else :
+ # on ne met pas de saut de ligne avant la premiere ligne
+ # si c est un commentaire on enleve le saut de ligne precedent
+ if m : self.texte_etape=self.texte_etape[1:]
+ self.jdc_fini = self.texte_etape
+ if m :
+ commentaireavant=1
+ else :
+ commentaireavant=0
+
return self.jdc_fini
place (dépend des gouts !!!)
"""
# ATTENTION a l'ordre des tests : il peut avoir de l'importance (héritage)
- premier=1
if isinstance(obj,Accas.PROC_ETAPE):
return self.generPROC_ETAPE(obj)
# Attention doit etre placé avant MACRO (raison : héritage)
elif isinstance(obj,Accas.ETAPE_NIVEAU):
return self.generETAPE_NIVEAU(obj)
elif isinstance(obj,Accas.COMMENTAIRE):
- return self.generCOMMENTAIRE(obj,premier)
+ return self.generCOMMENTAIRE(obj)
# Attention doit etre placé avant PARAMETRE (raison : héritage)
elif isinstance(obj,Accas.PARAMETRE_EVAL):
return self.generPARAMETRE_EVAL(obj)
return self.generFormula(obj)
else:
raise "Type d'objet non prévu",obj
- premier=0
def generJDC(self,obj):
"""
"""
return 'EVAL("""'+ obj.valeur +'""")'
- def generCOMMENTAIRE(self,obj,premier=0):
+ def generCOMMENTAIRE(self,obj):
"""
Cette méthode convertit un COMMENTAIRE
en une liste de chaines de caractères à la syntaxe python
txt = txt + '#'+ligne+'\n'
# suppression du dernier saut de ligne
- txt = re.sub("\n$","",txt)
+ #txt = re.sub("\n$","",txt)
# on ajoute un saut de ligne avant
pattern=re.compile(" ?\#")
m=pattern.match(txt)
- if m and not premier:
+ if m:
txt="\n"+txt
return txt
l.append(data)
return l
+
def format_item(self,valeur,etape):
if type(valeur) == types.FloatType :
# Pour un flottant on utilise str
s = repr(valeur)
return s
-
def generMCSIMP(self,obj) :
"""
Convertit un objet MCSIMP en une liste de chaines de caractères à la