From c01d600ea197618397edbc1b546496c90951b182 Mon Sep 17 00:00:00 2001 From: eficas <> Date: Tue, 20 Apr 2004 08:26:51 +0000 Subject: [PATCH] =?utf8?q?AY=20:=20dans=20Formatage.py,=20d=C3=A9coupage?= =?utf8?q?=20en=20sous=20m=C3=A9thodes,=20des=20cas=20trait=C3=A9s=20par?= =?utf8?q?=20la=20m=C3=A9thode=20AY=20:=20formate=5Fetape.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- generator/Formatage.py | 97 ++++++++++++++++++++++++++++-------------- 1 file changed, 65 insertions(+), 32 deletions(-) diff --git a/generator/Formatage.py b/generator/Formatage.py index 8af226a8..77485403 100644 --- a/generator/Formatage.py +++ b/generator/Formatage.py @@ -78,6 +78,8 @@ class Formatage : self.texte_etape = etape self.jdc_fini = self.jdc_fini + '\n' + self.texte_etape return self.jdc_fini + + def formate_etape(self,liste): """ @@ -110,42 +112,74 @@ class Formatage : # on écrit ses fils self.formate_etape(element[1:]) elif type(element) == types.StringType: + # il s'agit d'un mot-clé simple ou de ')' ou ');' ou '),' ou ');\n' + if element in l_patterns_fin_mcf : - # ici, on traite le mot-clef facteur "element" - self.texte_etape = self.texte_etape + string.strip(element) - length = len(self.indent) - if length > 1: - last = self.indent[length-1] - self.indent.remove(last) - self.indent_courant=self.indent[length-2] - else : - self.indent_courant=self.indent[0] + self.traite_mcfact(s_mcfact=element,ind=ind) elif element in l_patterns_fin_etape : - # ici, on traite l'etape "element" - length = len(self.indent) - if length > 1: - last = self.indent[length-1] - self.indent.remove(last) - self.indent_courant=self.indent[length-2] - else : - self.indent_courant=self.indent[0] - self.texte_etape = self.texte_etape + string.strip(element) + self.traite_etape(s_etape=element,ind=ind) else : - # ici, on traite un mot-clef simple (element) - longueur = self.longueur(self.texte_etape) - increment = len(('\n'+self.indent_courant*' ')*ind + string.strip(element)) - #self.jdc_fini = self.jdc_fini + ('\n'+self.indent_courant*' ')*ind + string.strip(element) - if ((1-ind)*longueur+increment) <= self.l_max : - self.texte_etape = self.texte_etape + ('\n'+self.indent_courant*' ')*ind + string.strip(element) - else : - # il faut couper ... - nom,valeur = string.split(element,self.sep,1) - chaine = self.creer_chaine(nom,valeur,'\n'+self.indent_courant*' ',ind) - #self.jdc_fini = self.jdc_fini + ('\n'+self.indent_courant*' ')*ind + string.strip(element) - self.texte_etape = self.texte_etape + chaine + self.traite_mcsimp(s_mcsimp=element,ind=ind) + ind = 1 - + + def traite_etape(self,s_etape,ind) : + """ + Traite une partie du jdc formaté : s_etape, une chaîne de caractères + contenant une étape + L'attribut self.texte_etape est modifié (complété) par le traitement + L'attribut self.indent est modifié par le traitement + L'attribut self.indent_courant est modifié par le traitement + """ + length = len(self.indent) + if length > 1: + last = self.indent[length-1] + self.indent.remove(last) + self.indent_courant=self.indent[length-2] + else : + self.indent_courant=self.indent[0] + self.texte_etape = self.texte_etape + string.strip(s_etape) + + def traite_mcfact(self,s_mcfact,ind) : + """ + Traite une partie du jdc formaté : s_mcfact, une chaîne de caractères + contenant un mot-clef facteur. + L'attribut self.texte_etape est modifié (complété) par le traitement + L'attribut self.indent est modifié par le traitement + L'attribut self.indent_courant est modifié par le traitement + """ + self.texte_etape = self.texte_etape + string.strip(s_mcfact) + length = len(self.indent) + if length > 1: + last = self.indent[length-1] + self.indent.remove(last) + self.indent_courant=self.indent[length-2] + else : + self.indent_courant=self.indent[0] + return + + + def traite_mcsimp(self,s_mcsimp,ind) : + """ + Traite une partie du jdc formaté : s_mcsimp, une chaîne de caractères + contenant un mot-clef simple. + L'attribut self.texte_etape est modifié (complété) par le traitement + """ + longueur = self.longueur(self.texte_etape) + increment = len(('\n'+self.indent_courant*' ')*ind + string.strip(s_mcsimp)) + #self.jdc_fini = self.jdc_fini + ('\n'+self.indent_courant*' ')*ind + string.strip(s_mcsimp) + if ((1-ind)*longueur+increment) <= self.l_max : + self.texte_etape = self.texte_etape + ('\n'+self.indent_courant*' ')*ind + string.strip(s_mcsimp) + else : + # il faut couper ... + nom,valeur = string.split(s_mcsimp,self.sep,1) + chaine = self.creer_chaine(nom,valeur,'\n'+self.indent_courant*' ',ind) + #self.jdc_fini = self.jdc_fini + ('\n'+self.indent_courant*' ')*ind + string.strip(s_mcsimp) + self.texte_etape = self.texte_etape + chaine + return + + def longueur(self,texte): """ texte est une string qui peut contenir des retours chariots @@ -203,4 +237,3 @@ class Formatage : s=s+'\n'+texte return s - -- 2.39.2