Salome HOME
CCAR : quelques modifs sur convertisseur python (liste de MCFACT)
[tools/eficas.git] / generator / generator_python6.py
1 # -*- coding: utf-8 -*-
2 #            CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
9 #
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
14 #
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 #    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
18 #
19 #
20 # ======================================================================
21 """
22     Ce module contient le plugin generateur de fichier au format 
23     python pour EFICAS.
24
25 """
26 import traceback
27 import types,string,re
28
29 from Noyau import N_CR
30 from Noyau.N_utils import repr_float
31 from Accas import ETAPE,PROC_ETAPE,MACRO_ETAPE,ETAPE_NIVEAU,JDC,FORM_ETAPE
32 from Accas import MCSIMP,MCFACT,MCBLOC,MCList,EVAL
33 from Accas import GEOM,ASSD,MCNUPLET
34 from Accas import COMMENTAIRE,PARAMETRE, PARAMETRE_EVAL,COMMANDE_COMM
35 from Formatage import Formatage
36
37 import generator_python
38
39 def entryPoint():
40    """
41        Retourne les informations nécessaires pour le chargeur de plugins
42
43        Ces informations sont retournées dans un dictionnaire
44    """
45    return {
46         # Le nom du plugin
47           'name' : 'python6',
48         # La factory pour créer une instance du plugin
49           'factory' : PythonGenerator,
50           }
51
52
53 class PythonGenerator(generator_python.PythonGenerator):
54    """
55        Ce generateur parcourt un objet de type JDC et produit
56        un fichier au format python6
57
58        L'acquisition et le parcours sont réalisés par la méthode
59        generator.gener(objet_jdc,format)
60
61        L'écriture du fichier au format python6 par appel de la méthode
62        generator.writefile(nom_fichier)
63
64        Ses caractéristiques principales sont exposées dans des attributs 
65        de classe :
66          - extensions : qui donne une liste d'extensions de fichier préconisées
67
68    """
69    # Les extensions de fichier préconisées
70    extensions=('.comm',)
71
72    def generFORM_ETAPE(self,obj):
73         """
74             Méthode particulière pour les objets de type FORMULE
75         """
76         print "coucou"
77         l=[]
78         nom = obj.get_nom()
79         if nom == '' : nom = 'sansnom'
80         l.append(nom + ' = FORMULE(')
81         for v in obj.mc_liste:
82             text=self.generator(v)
83             l.append(v.nom+'='+text)
84         l.append(');')
85         return l
86
87    def gen_formule(self,obj):
88       """
89            Méthode particuliere aux objets de type FORMULE
90       """
91       try:
92         if obj.sd == None:
93           sdname=''
94         else:
95           sdname= self.generator(obj.sd)
96       except:
97         sdname='sansnom'
98       l=[]
99       label=sdname + ' = FORMULE('
100       l.append(label)
101       for v in obj.mc_liste:
102         s=''
103         s= v.nom+':'+sdname+'('+v.valeur+')'
104         l.append(s)
105       if len(l) == 1:
106         l[0]=label+');'
107       else :
108         l.append(');')
109       return l