#
import re, string
from Extensions.i18n import tr
-from Accas.A_BLOC import BLOC
-from Accas import *
from convert_python import PythonParser
pattern_ligne=re.compile(r'^\s*(?P<ident>[^=:]*)\s*[:=]\s*(?P<reste>.*)$')
+pattern_variables=re.compile (r"^\s*(?P<ident>VARIABLES POUR LES SORTIES GRAPHIQUES)\s*[:=]\s*(?P<valeur>\w(,\w)*)\s*(?P<reste>.*)$")
+
# Attention aux listes de flottants
pattern_liste=re.compile(r'^\s*(?P<valeur>[+-.\w]+(\s*;\s*[+-.\w]+)+)\s*(?P<reste>.*)$')
pattern_flottant=re.compile(r'^\s*(?P<valeur>[+-]?((\d+(\.\d*)?)|(\.\d+))([dDeE][+-]?\d+)?)\s*(?P<reste>.*)$')
pattern_texteQuote = re.compile (r"^\s*(?P<valeur>'[^']+(''[^']+)*')\s*(?P<reste>.*)$")
pattern_texteSimple = re.compile (r"(?P<valeur>(^|\s)\s*[\w\.-]+)\s*(?P<reste>.*)$")
-pattern_texteVide = re.compile (r"^\s*(?P<valeur>'')\s*(?P<reste>.*)$")
+pattern_texteVide = re.compile (r"^\s*(?P<valeur>'')\s*(?P<reste>.*)$")
pattern_ContientDouble=re.compile (r"^.*''.*$")
try :
from aideAuxConvertisseurs import DicoEficasToCas, ListeSupprimeCasToEficas
from aideAuxConvertisseurs import ListeCalculCasToEficas, DicoAvecMajuscules
- from enumDicoTelemac2 import DicoEnumCasEn
+ from enumDicoTelemac import DicoEnumCasEn
except :
pass
"""
def convert(self, outformat, appli=None):
+ from Accas import A_BLOC, A_FACT, A_SIMP
self.dicoInverseFrancais=appli.readercata.dicoInverseFrancais
self.dicoAnglaisFrancais=appli.readercata.dicoAnglaisFrancais
self.dicoFrancaisAnglais=appli.readercata.dicoFrancaisAnglais
finLigne=ligne
while finLigne != "" :
- print finLigne
+ #print finLigne
+ if pattern_comment_slash.match(finLigne) : finLigne=""; continue
valeur=""
+ if pattern_variables.match(finLigne) :
+ m=pattern_variables.match(finLigne)
+ valeur=m.group('valeur')
+ simp=self.traiteIdent(m.group('ident'))
+ finLigne=m.group('reste')
+ self.dictSimp[simp]=valeur
+ continue
+
m=pattern_ligne.match(finLigne)
if m == None :
- print "________________________________________________"
+ #print "________________________________________________"
print 'pb avec ****', finLigne , '**** dans ', ligne
- print "________________________________________________"
+ #print "________________________________________________"
break
simp=self.traiteIdent(m.group('ident'))
elif pattern_texteSimple.match(finLigne):
m=pattern_texteSimple.match(finLigne)
else :
- print "________________________________________________"
+ #print "________________________________________________"
print 'pb avec ****', finLigne , '**** dans ', ligne
print "non match"
- print "________________________________________________"
+ #print "________________________________________________"
break
valeur=m.group('valeur')
print "************"
print "pb avec dans dicoInverseFrancais", simp,'------'
print "************"
- print poum
+ #print poum
continue
listeGenea=self.dicoInverseFrancais[simp]
listeGeneaReverse=[]
for (u,v) in listeGenea :
- if isinstance(v,BLOC): continue
+ if isinstance(v,A_BLOC.BLOC): continue
listeGeneaReverse.append(u)
listeGeneaReverse.reverse()
dicoTravail=dicoParMC
#print "----------- "
- print self.textePy
+ #print self.textePy
return self.textePy
#----------------------------------------
ind=simp.find('-')
if ind==len(simp)-1 : break
simp=simp[0:ind]+'_'+simp[ind+1].upper()+simp[ind+2:]
+ return simp
#----------------------------------------
def traiteIdent(self,listeIdent):
simp=simp[0:-1]
while simp[-1] == " " : simp=simp[0:-1]
if simp.find('-') > 0 : simp=self.redecoupeSimp(simp)
+
return simp
def traiteMC(self,dico) :
+ from Accas import A_BLOC, A_FACT, A_SIMP
for k in dico.keys() :
valeur= dico[k]
if k not in self.dicoMC.keys() : kA=self.dicoFrancaisAnglais[k]
else : kA=k
obj=self.dicoMC[kA]
- if isinstance(obj,FACT): self.generFACT(obj,kA,valeur)
- elif isinstance(obj,BLOC): self.generBLOC(obj,kA,valeur)
- elif isinstance(obj,SIMP): self.generSIMP(obj,kA,valeur)
- else : print "%%%%%%%%%%%\n", "pb generation pour", k, obj, "\n%%%%%%%%%%%"
+ if isinstance(obj,A_FACT.FACT): self.convertFACT(obj,kA,valeur)
+ elif isinstance(obj,A_BLOC.BLOC): self.convertBLOC(obj,kA,valeur)
+ elif isinstance(obj,A_SIMP.SIMP): self.convertSIMP(obj,kA,valeur)
+ else : print "%%%%%%%%%%%\n", "pb conversion type pour", k, obj, "\n%%%%%%%%%%%"
#print "_____________"
- def generFACT(self,obj,nom,valeur):
+ def convertFACT(self,obj,nom,valeur):
if nom in TELEMACParser.__dict__.keys() :
apply(TELEMACParser.__dict__[nom],(self,))
return
self.textePy += '),\n'
- def generBLOC(self,obj,nom,valeur):
+ def convertBLOC(self,obj,nom,valeur):
print "BLOC "
print nom
- def generSIMP(self,obj,nom,valeur):
+ def convertSIMP(self,obj,nom,valeur):
if nom in ("Prescribed_Flowrates", "Prescribed_Velocities", "Prescribed_Elevations" ): return
- #print "___________________________"
- #print nom
- #print valeur
- if valeur == None : print nom
if obj.max==1 :
+ if hasattr(obj.type[0],'ntuple') :
+ lval=[]
+ for v in valeur :
+ try : v=eval(v,{})
+ except : pass
+ lval.append(v)
+ self.textePy += nom + "=" + str(lval) +","
+ return
if 'TXM' in obj.type :
- if pattern_ContientDouble.match(valeur):
- valeur=re.sub("''","\'\'",valeur)
- print str(valeur)
- print valeur
- print tr(valeur)
- print poum
+ if pattern_ContientDouble.match(str(valeur)):
+ valeur=re.sub("''","\'\'",str(valeur))
+ self.textePy += nom + "=" + str(valeur) +","
+ return
valeur=str(valeur)
# ceinture et bretelle si les re sont correctes -)
while valeur[-1] == " " or valeur[-1] == '\t' : valeur=valeur[0:-1]
while valeur[0] == " " or valeur[0] == '\t' : valeur=valeur[1:]
- if pattern_ContientDouble.match(valeur):
- valeur=re.sub("''","\'\'",valeur)
- print valeur
- print tr(valeur)
- print poum
# Pour les enum
except : pass
if nom in DicoEnumCasEn.keys():
#print "est dans le dico des enum, valeur simple"
- try : valeur=DicoEnumCasEn[nom][valeur]
+ try :
+ valeur=DicoEnumCasEn[nom][valeur]
+ self.textePy += nom + "= '" + str(valeur) +"',"
+ return
except : pass
- if obj.into != [] and obj.into != None :
+ if obj.into != [] and obj.into != None and not('R' in obj.type) and not('I' in obj.type):
for possible in obj.into :
+ try :
if possible.upper() == valeur.upper():
valeur=possible
break
if possible.upper() == v2.upper():
valeur=possible
break
+ except:
+ print "pb avec le type de ", obj.nom, obj.type, 'et la valeur ', valeur
if 'Fichier' in obj.type or 'TXM' in obj.type or 'Repertoire' in obj.type :
valeur=str(valeur)
else : self.dictSimp["Parallel_Computation"]="Parallel"
def decoupeListe(self,valeurs,label):
- print "decoupeSUPG"
- print valeurs
+ #print "decoupeListe"
+ #print valeurs
i=0
for prefixe in ('_U_And_V','_H'):
labelComplet=label+prefixe
self.dictSimp['Convection_De_U_Et_V']=True
self.dictSimp['Convection_De_H']=True
if len(valeurs)==2 : return
- self.dictSimp['Advection_Of_K_And_Epsilon']=True
- self.dictSimp['Advection_Of_Tracers']=True
+ self.dictSimp['Convection_De_K_Et_Epsilon']=True
+ self.dictSimp['Convection_Des_Traceurs']=True
def Discretisations_En_Espace(self):
self.decoupeListe( self.dictSimp["Discretisations_En_Espace"],"Discretisations_En_Espace")
del self.dictSimp["Discretisations_En_Espace"]
+ def Date_De_L_Origine_Des_Temps (self):
+ valeurs=self.dictSimp["Date_De_L_Origine_Des_Temps"]
+ self.dictSimp['Annee']=valeurs[0]
+ self.dictSimp['Mois']=valeurs[1]
+ self.dictSimp['Jour']=valeurs[2]
+ del self.dictSimp["Date_De_L_Origine_Des_Temps"]
+
+
+ def Heure_De_L_Origine_Des_Temps (self):
+ valeurs=self.dictSimp["Heure_De_L_Origine_Des_Temps"]
+ self.dictSimp['Heure']=valeurs[0]
+ self.dictSimp['Minute']=valeurs[1]
+ self.dictSimp['Seconde']=valeurs[2]
+ del self.dictSimp["Heure_De_L_Origine_Des_Temps"]
def Liquid_Boundaries(self):
#print 'Liquid Boundaries'