]> SALOME platform Git repositories - tools/eficas.git/blob - Editeur/patches.py
Salome HOME
PN : Choix automatique du concept lorsqu'un seul choix est possible.
[tools/eficas.git] / Editeur / patches.py
1 #            CONFIGURATION MANAGEMENT OF EDF VERSION
2 # ======================================================================
3 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
4 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
5 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
6 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
7 # (AT YOUR OPTION) ANY LATER VERSION.
8 #
9 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
10 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
11 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
12 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
13 #
14 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
15 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
16 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
17 #
18 #
19 # ======================================================================
20
21 """
22    Ce module contient des modifications mineures du comportement
23    du noyau ou de validation
24 """
25 import string
26
27 if 1:
28    # Modification de la fonction justify_text de Noyau.N_CR
29    separateurs=(' ',',','/')
30    def split(ligne,cesure):
31        ligne= string.rstrip(ligne)
32        if len(ligne) <= cesure : 
33           return ligne
34        else:
35           coupure=cesure
36           while ligne[coupure] not in separateurs and coupure > 0:
37              coupure = coupure - 1
38           if coupure == 0:
39              # Il faut augmenter la cesure
40              coupure =cesure
41              while ligne[coupure] not in separateurs and coupure < len(ligne)-1 :
42                 coupure = coupure + 1
43           if coupure == len(ligne)-1:
44              return ligne
45           else:
46              return ligne[:coupure+1]+ '\n' + split(ligne[coupure+1:],cesure)
47
48    def justify_text(texte='',cesure=50):
49        texte = string.strip(texte)
50        liste_lignes = string.split(texte,'\n')
51        l=[split(l,cesure) for l in liste_lignes]
52        texte_justifie=string.join(l,'\n')
53        return texte_justifie
54    try:
55       import Noyau.N_CR
56       Noyau.N_CR.justify_text=justify_text
57    except:
58       pass
59
60 def encadre_message(texte,motif):
61   """
62      Retourne la chaine de caractères texte entourée d'un cadre formés
63      d'éléments 'motif'
64   """
65   texte = justify_text(texte,cesure=80)
66   lignes = string.split(texte,'\n')
67   longueur = 0
68   for ligne in lignes :
69     if len(ligne)> longueur : longueur = len(ligne)
70   longueur = longueur + 4
71   txt = motif*longueur+'\n'
72   for ligne in lignes :
73     txt = txt + motif + ' '+ligne+' '*(longueur-len(motif+ligne)-2)+motif+'\n'
74   txt = txt + motif*longueur+'\n'
75   return txt
76
77 if __name__ == "__main__":
78    print encadre_message(motif='!',
79 texte="""- Il faut au moins un mot-clé parmi : ('DEBUT', 'POURSUITE')     
80 - Il faut au moins un mot-clé parmi : ('FIN',)               
81 - Il faut qu'au moins un objet de la liste : ('DEBUT', 'POURSUITE') soit suivi d'au moins un objet de la liste : ('FIN',) 
82 ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
83 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,yyyyyyyyyyyyyyyy
84 """)
85
86
87