-import string
-from strfunc import convert, ufmt
-
-class CR :
- """
- Classe servant à la construction et à l'affichage des objets Comptes-rendus
- """
- def __init__(self,verbeux = 'non',debut='',fin='',dec=' '):
- """
- Attributs
- - verbeux
- - debut
- - fin
- - dec
- """
- self.verbeux = verbeux
- self.debut=debut
- self.fin=fin
- self.dec=dec
- self.crok=[]
- self.crwarn=[]
- self.crfatal=[]
- self.crexception=[]
- self.subcr=[]
-
- def ok(self,comment):
- """ Ajoute un commentaire OK à la liste crok"""
- self.crok.append(comment)
-
- def warn(self,comment):
- """ Ajoute un commentaire Warning à la liste crwarn"""
- self.crwarn.append(comment)
-
- def fatal(self, comment, *args):
- """Ajoute un commentaire Erreur Fatale à la liste crfatal à formater"""
- self.crfatal.append(ufmt(comment, *args))
-
- def exception(self,comment):
- """ Ajoute un commentaire Exception à la liste crexception"""
- self.crexception.append(comment)
-
- def add(self,cr):
- """ Ajoute un objet CR à la liste subcr :il s'agit de l'objet CR d'un fils de self """
- self.subcr.append(cr)
-
- def estvide(self):
- """
- Retourne 1 si self ne contient aucun message grave (fatal ou exception)
- et aucun CR qui en contienne, 0 sinon
- """
- if self.crexception : return 0
- if self.crfatal : return 0
- for s in self.subcr :
- if not s.estvide(): return 0
- return 1
-
- def purge(self):
- """
- Purge complètement le CR sauf les exceptions
- """
- self.debut=''
- self.fin=''
- self.dec=' '
- self.crok=[]
- self.crwarn=[]
- self.crfatal=[]
- self.subcr=[]
-
- def beautifie_messages(self):
- """
- Beautifie les messages stockés dans crok,crfatal,crexception et crwarn
- """
- l=[]
- for mess in self.crok:
- l.append(mess+'\n')
- self.crok_belle=l
- l=[]
- for mess in self.crwarn:
- l.append(encadre_message(mess,'*'))
- self.crwarn_belle = l
- l=[]
- for mess in self.crfatal:
- l.append(encadre_message(mess,'!'))
- self.crfatal_belle = l
- l=[]
- for mess in self.crexception:
- l.append(encadre_message(mess,'!'))
- self.crexception_belle = l
-
- def indent(self,s):
- """
- Insère en tete de chaque ligne du texte s la chaine self.dec
- """
- l = string.split(s,'\n')
- return self.dec+string.join(l,'\n'+self.dec)[:-3]
-
- def __unicode__(self):
- """
- Retourne une chaine de caractères décorée et représentative de self
- """
- s=''
- self.beautifie_messages()
- s=s+string.join(self.crok_belle,'')
- s=s+string.join(self.crwarn_belle,'')
- s=s+string.join(self.crfatal_belle,'')
- s=s+string.join(self.crexception_belle,'')
- for subcr in self.subcr:
- if self.verbeux == 'oui':
- s=s+unicode(subcr)+'\n'
- else:
+from __future__ import absolute_import
+try :
+ from builtins import str
+ from builtins import object
+except :
+ pass
+import six
+
+
+class CR(object):
+
+ """
+ Classe servant a la construction et a l'affichage des objets Comptes-rendus
+ """
+
+ def __init__(self, verbeux='non', debut='', fin='', dec=' '):
+ """
+ Attributs
+ - verbeux
+ - debut
+ - fin
+ - dec
+ """
+ self.verbeux = verbeux
+ self.debut = debut
+ self.fin = fin
+ self.dec = dec
+ self.crok = []
+ self.crwarn = []
+ self.crfatal = []
+ self.crexception = []
+ self.subcr = []
+
+ def ok(self, comment):
+ """ Ajoute un commentaire OK a la liste crok"""
+ self.crok.append(comment)
+
+ def warn(self, comment):
+ """ Ajoute un commentaire Warning a la liste crwarn"""
+ self.crwarn.append(comment)
+
+ def fatal(self, comment, *args):
+ """Ajoute un commentaire Erreur Fatale a la liste crfatal a formater"""
+ self.crfatal.append(comment)
+ self.crfatal.append(str( *args))
+
+ def exception(self, comment):
+ """ Ajoute un commentaire Exception a la liste crexception"""
+ self.crexception.append(comment)
+
+ def add(self, cr):
+ """ Ajoute un objet CR a la liste subcr :il s'agit de l'objet CR d'un fils de self """
+ self.subcr.append(cr)
+
+ def estvide(self):
+ """
+ Retourne 1 si self ne contient aucun message grave (fatal ou exception)
+ et aucun CR qui en contienne, 0 sinon
+ """
+ if self.crexception:
+ return 0
+ if self.crfatal:
+ return 0
+ for s in self.subcr:
+ if not s.estvide():
+ return 0
+ return 1
+
+ def purge(self):
+ """
+ Purge complètement le CR sauf les exceptions
+ """
+ self.debut = ''
+ self.fin = ''
+ self.dec = ' '
+ self.crok = []
+ self.crwarn = []
+ self.crfatal = []
+ self.subcr = []
+
+ def beautifieMessages(self):
+ """
+ Beautifie les messages stockés dans crok,crfatal,crexception et crwarn
+ """
+ l = []
+ for mess in self.crok:
+ l.append(mess + '\n')
+ self.crok_belle = l
+ l = []
+ for mess in self.crwarn:
+ l.append(encadreMessage(mess, '*'))
+ self.crwarn_belle = l
+ l = []
+ for mess in self.crfatal:
+ l.append(encadreMessage(mess, '!'))
+ self.crfatal_belle = l
+ l = []
+ for mess in self.crexception:
+ l.append(encadreMessage(mess, '!'))
+ self.crexception_belle = l
+
+ def indent(self, s):
+ """
+ Insère en tete de chaque ligne du texte s la chaine self.dec
+ """
+ l = s.split( '\n')
+ a='\n' + self.dec
+ return self.dec + a.join(l)[:-3]
+
+ def __unicode__(self):
+ """
+ Retourne une chaine de caractères décorée et représentative de self
+ """
+ s = ''
+ self.beautifieMessages()
+ s = s + ''.join(self.crok_belle)
+ s = s + ''.join(self.crwarn_belle)
+ s = s + ''.join(self.crfatal_belle)
+ s = s + ''.join(self.crexception_belle)
+ for subcr in self.subcr:
+ if self.verbeux == 'oui':
+ s = s + six.text_type(subcr) + '\n'
+ else:
+ if not subcr.estvide():
+ s = s + six.text_type(subcr)
+ if s != '':
+ s = self.debut + '\n' + self.indent(s) + self.fin + '\n'
+ else:
+ s = self.debut + '\n' + self.fin + '\n'
+ return s
+
+ def __str__(self):
+ """Return the report representation"""
+ txt = self.__unicode__()
+ return txt
+
+ def report(self, decalage=2):
+ """
+ Retourne une chaine de caractères non encadrée mais représentative de self
+ """
+ s = ''
+ # on stocke dans s les messages de premier niveau
+ for mess in self.crok:
+ s = s + decalage * self.dec + mess + self.dec + '\n'
+ for mess in self.crwarn:
+ s = s + decalage * self.dec + mess + self.dec + '\n'
+ for mess in self.crfatal:
+ s = s + decalage * self.dec + mess + self.dec + '\n'
+ for mess in self.crexception:
+ s = s + decalage * self.dec + mess + self.dec + '\n'
+ # on récupère les messages des sous comptes-rendus ...
+ for subcr in self.subcr: