From db3bd09ad8af1874cee043437e8f37939247f49a Mon Sep 17 00:00:00 2001 From: "pascale.noyret" Date: Thu, 27 Apr 2017 11:09:54 +0200 Subject: [PATCH] pour telemac --- InterfaceQT4/feuille.py | 2 +- UiQT5/desWidget4a6RadioButton.ui | 8 +- UiQT5/desWidgetCB.ui | 2 +- UiQT5/desWidgetRadioButton.ui | 9 +- convert/convert_SEP.py | 38 -------- convert/convert_TELEMAC.py | 6 +- convert/convert_asterv5.py | 130 -------------------------- convert/convert_cuve2dg.py | 38 -------- convert/convert_file_from_template.py | 26 ------ convert/convert_homard.py | 125 ------------------------- convert/convert_ini.py | 117 ----------------------- convert/convert_perfect.py | 38 -------- convert/convert_python6.py | 62 ------------ convert/parseur_python.py | 3 +- generator/generator_TELEMAC.py | 42 +++++++-- generator/generator_dicoImbrique.py | 2 + generator/generator_python.py | 12 +++ 17 files changed, 65 insertions(+), 595 deletions(-) delete mode 100644 convert/convert_SEP.py delete mode 100644 convert/convert_asterv5.py delete mode 100644 convert/convert_cuve2dg.py delete mode 100644 convert/convert_file_from_template.py delete mode 100644 convert/convert_homard.py delete mode 100644 convert/convert_ini.py delete mode 100644 convert/convert_perfect.py delete mode 100644 convert/convert_python6.py diff --git a/InterfaceQT4/feuille.py b/InterfaceQT4/feuille.py index 717faa8e..246ee9a7 100644 --- a/InterfaceQT4/feuille.py +++ b/InterfaceQT4/feuille.py @@ -43,7 +43,7 @@ class Feuille(QWidget,ContientIcones,SaisieValeur,FacultatifOuOptionnel): def __init__(self,node,monSimpDef,nom,objSimp,parentQt,commande): - #print "Feuille", monSimpDef,nom,objSimp + #print ("Feuille", monSimpDef,nom,objSimp) QWidget.__init__(self,None) self.node=node self.node.fenetre=self diff --git a/UiQT5/desWidget4a6RadioButton.ui b/UiQT5/desWidget4a6RadioButton.ui index 71780e85..0c64044a 100644 --- a/UiQT5/desWidget4a6RadioButton.ui +++ b/UiQT5/desWidget4a6RadioButton.ui @@ -7,7 +7,7 @@ 0 0 949 - 73 + 77 @@ -167,6 +167,12 @@ + + + 0 + 0 + + QFrame::Box diff --git a/UiQT5/desWidgetCB.ui b/UiQT5/desWidgetCB.ui index c5f16d2c..ba0c5a24 100644 --- a/UiQT5/desWidgetCB.ui +++ b/UiQT5/desWidgetCB.ui @@ -11,7 +11,7 @@ - + 0 0 diff --git a/UiQT5/desWidgetRadioButton.ui b/UiQT5/desWidgetRadioButton.ui index 1064a2ca..2f76ee14 100644 --- a/UiQT5/desWidgetRadioButton.ui +++ b/UiQT5/desWidgetRadioButton.ui @@ -179,7 +179,7 @@ 0 - + 0 @@ -192,7 +192,7 @@ - + 0 @@ -229,7 +229,7 @@ Qt::Horizontal - QSizePolicy::Fixed + QSizePolicy::Expanding @@ -296,9 +296,6 @@ label - radioButton_1 - radioButton_3 - radioButton_2 diff --git a/convert/convert_SEP.py b/convert/convert_SEP.py deleted file mode 100644 index 00f862c6..00000000 --- a/convert/convert_SEP.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -""" -""" - -import parseur_python -from convert_python import * - -def entryPoint(): - """ - Retourne les informations nécessaires pour le chargeur de plugins - Ces informations sont retournées dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'SEP', - # La factory pour créer une instance du plugin - 'factory' : PythonParser, - } - - diff --git a/convert/convert_TELEMAC.py b/convert/convert_TELEMAC.py index 894b4dc2..2405563e 100644 --- a/convert/convert_TELEMAC.py +++ b/convert/convert_TELEMAC.py @@ -33,6 +33,7 @@ except NameError: pattern_comment_slash = re.compile(r"^\s*/") pattern_comment_slash_vide = re.compile(r"^\s*/\s*$") +pattern_comment_tiret = re.compile(r"^\s*/-*/$") pattern_eta = re.compile(r".*&ETA.*") pattern_fin = re.compile(r".*&FIN.*") pattern_oui = re.compile(r"^\s*(oui|OUI|YES|yes|TRUE|VRAI)\s*$") @@ -131,8 +132,9 @@ class TELEMACParser(PythonParser): if debut : debut = False if pattern_comment_slash.match(l): - if pattern_comment_slash_vide.match(l) : continue - texteComment+=l.replace ('/','#',1) + #if pattern_comment_slash_vide.match(l) : continue + if pattern_comment_tiret.match(l) : continue + texteComment+=l.replace ('/','',1) texteComment+='\n' trouveComment=1 diff --git a/convert/convert_asterv5.py b/convert/convert_asterv5.py deleted file mode 100644 index 6709e904..00000000 --- a/convert/convert_asterv5.py +++ /dev/null @@ -1,130 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -""" - Ce module contient le plugin convertisseur de fichier - au format asterv5 pour EFICAS. - - Un plugin convertisseur doit fournir deux attributs de classe : - extensions et formats et deux méthodes : readfile,convert. - - L'attribut de classe extensions est une liste d'extensions - de fichiers préconisées pour ce type de format. Cette information - est seulement indicative. - - L'attribut de classe formats est une liste de formats de sortie - supportés par le convertisseur. Les formats possibles sont : - eval, dict ou exec. - Le format eval est un texte source Python qui peut etre evalué. Le - résultat de l'évaluation est un objet Python quelconque. - Le format dict est un dictionnaire Python. - Le format exec est un texte source Python qui peut etre executé. - - La méthode readfile a pour fonction de lire un fichier dont le - nom est passé en argument de la fonction. - - convertisseur.readfile(nom_fichier) - - La méthode convert a pour fonction de convertir le fichier - préalablement lu dans un objet du format passé en argument. - - objet=convertisseur.convert(outformat) - - Ce convertisseur supporte uniquement le format de sortie exec - -""" -import sys,string,traceback - -from Noyau import N_CR - -def entryPoint(): - """ - Retourne les informations nécessaires pour le chargeur de plugins - Ces informations sont retournées dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'asterv5', - # La factory pour créer une instance du plugin - 'factory' : AsterParser, - } - -import Parserv5.conv -import parseur_python - -class AsterParser: - """ - """ - # Les extensions de fichier préconisées - extensions=('.comm',) - # Les formats de sortie supportés (eval dict ou exec) - formats=('exec','execnoparseur') - - def __init__(self,cr=None): - # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard - if cr : - self.cr=cr - else: - self.cr=N_CR.CR(debut='CR convertisseur format asterv5', - fin='fin CR format asterv5') - self.oldtext='' - self.out=self.err=self.warn='' - - def readfile(self,filename): - self.filename=filename - try: - self.text=open(filename).read() - except: - self.cr.fatal("Impossible ouvrir fichier %s" % filename) - return - - def convert(self,outformat,appli=None): - if outformat == 'exec': - return self.getexec() - elif outformat == 'execnoparseur': - return self.getexecnoparseur() - else: - raise "Format de sortie : %s, non supporté" - - def getexec(self): - if self.text != self.oldtext: - self.out, self.err, self.warn= Parserv5.conv.conver(self.text) - if self.err: - self.cr.fatal("Erreur a l'interpretation de %s" % self.filename) - self.cr.fatal(str(self.err)) - return self.out - # On transforme les commentaires et les parametres en objets Python - # avec un deuxième parseur - try: - self.out = parseur_python.PARSEUR_PYTHON(self.out).get_texte() - except: - self.cr.fatal("Erreur dans la deuxième phase d interpretation de %s" % self.filename) - traceback.print_exc() - return "" - self.oldtext=self.text - return self.out - - def getexecnoparseur(self): - if self.text != self.oldtext: - self.out, self.err, self.warn= Parserv5.conv.conver(self.text) - if self.err: - self.cr.fatal("Erreur a l'interpretation de %s" % self.filename) - self.cr.fatal(str(self.err)) - return self.out - self.oldtext=self.text - return self.out - diff --git a/convert/convert_cuve2dg.py b/convert/convert_cuve2dg.py deleted file mode 100644 index a9a08235..00000000 --- a/convert/convert_cuve2dg.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -""" -""" - -import parseur_python -from convert_python import * - -def entryPoint(): - """ - Retourne les informations nécessaires pour le chargeur de plugins - Ces informations sont retournées dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'cuve2dg', - # La factory pour créer une instance du plugin - 'factory' : PythonParser, - } - - diff --git a/convert/convert_file_from_template.py b/convert/convert_file_from_template.py deleted file mode 100644 index 89e3747f..00000000 --- a/convert/convert_file_from_template.py +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -from convert_python import PythonParser - -def entryPoint(): - """ - Return a dictionary containing the description needed to load the plugin - """ - return {'name' : 'file_from_template', - 'factory' : PythonParser} diff --git a/convert/convert_homard.py b/convert/convert_homard.py deleted file mode 100644 index 51d5e5b0..00000000 --- a/convert/convert_homard.py +++ /dev/null @@ -1,125 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -""" - Ce module contient le plugin convertisseur de fichier - au format python pour EFICAS. - - Un plugin convertisseur doit fournir deux attributs de classe : - extensions et formats et deux méthodes : readfile,convert. - - L'attribut de classe extensions est une liste d'extensions - de fichiers préconisées pour ce type de format. Cette information - est seulement indicative. - - L'attribut de classe formats est une liste de formats de sortie - supportés par le convertisseur. Les formats possibles sont : - eval, dict ou exec. - Le format eval est un texte source Python qui peut etre evalué. Le - résultat de l'évaluation est un objet Python quelconque. - Le format dict est un dictionnaire Python. - Le format exec est un texte source Python qui peut etre executé. - - La méthode readfile a pour fonction de lire un fichier dont le - nom est passé en argument de la fonction. - - convertisseur.readfile(nom_fichier) - - La méthode convert a pour fonction de convertir le fichier - préalablement lu dans un objet du format passé en argument. - - objet=convertisseur.convert(outformat) - - Ce convertisseur supporte le format de sortie exec - -""" -import sys,string,traceback - -import parseur_python -from Noyau import N_CR -from Extensions.i18n import tr -from Extensions.eficas_exception import EficasException - -def entryPoint(): - """ - Retourne les informations nécessaires pour le chargeur de plugins - Ces informations sont retournées dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'homard', - # La factory pour créer une instance du plugin - 'factory' : PythonParser, - } - - -class PythonParser: - """ - Ce convertisseur lit un fichier au format python avec la - methode readfile : convertisseur.readfile(nom_fichier) - et retourne le texte au format outformat avec la - methode convertisseur.convert(outformat) - - Ses caractéristiques principales sont exposées dans 2 attributs - de classe : - - extensions : qui donne une liste d'extensions de fichier préconisées - - formats : qui donne une liste de formats de sortie supportés - """ - # Les extensions de fichier préconisées - extensions=('.py',) - # Les formats de sortie supportés (eval dict ou exec) - # Le format exec est du python executable (commande exec) converti avec PARSEUR_PYTHON - # Le format execnoparseur est du python executable (commande exec) non converti - formats=('exec','execnoparseur') - - def __init__(self,cr=None): - # Si l'objet compte-rendu n'est pas fourni, on utilise le - # compte-rendu standard - self.text='' - if cr : - self.cr=cr - else: - self.cr=N_CR.CR(debut='CR convertisseur format python', - fin='fin CR format python') - - def readfile(self,filename): - self.filename=filename - try: - self.text=open(filename).read() - except: - self.cr.fatal(tr("Impossible d'ouvrir le fichier: %s", str(filename))) - return - - def convert(self,outformat,appli=None): - if outformat == 'exec': - try: - return parseur_python.PARSEUR_PYTHON(self.text).get_texte() - except: - # Erreur lors de la conversion - l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1], - sys.exc_info()[2]) - self.cr.exception(tr("Impossible de convertir le fichier Python \ - qui doit contenir des erreurs.\n \ - On retourne le fichier non converti \n \ - Prevenir la maintenance. \n %s", string.join(l))) - # On retourne neanmoins le source initial non converti (au cas ou) - return self.text - elif outformat == 'execnoparseur': - return self.text - else: - raise EficasException(tr("Format de sortie : %s, non supporte", unicode(outformat))) - return None diff --git a/convert/convert_ini.py b/convert/convert_ini.py deleted file mode 100644 index 9f6ded8d..00000000 --- a/convert/convert_ini.py +++ /dev/null @@ -1,117 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -""" - Ce module contient le plugin convertisseur de fichier - au format ini pour EFICAS. - Le convertisseur supporte le format de sortie eval - - Le format eval est un texte Python qui peut etre - evalué avec la commande eval de Python. Il doit donc - etre une expression Python dont l'évaluation permet d'obtenir un objet - -""" -import traceback - -from ConfigParser import ConfigParser -from Noyau import N_CR -from Extensions.i18n import tr -from Extensions.eficas_exception import EficasException - - -def entryPoint(): - """ - Retourne les informations nécessaires pour le chargeur de plugins - Ces informations sont retournées dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'ini', - # La factory pour créer une instance du plugin - 'factory' : IniParser, - } - - -class IniParser(ConfigParser): - """ - Ce convertisseur lit un fichier au format ini avec la - methode readfile : convertisseur.readfile(nom_fichier) - et retourne le texte au format outformat avec la - methode convertisseur.convert(outformat) - - Ses caractéristiques principales sont exposées dans 2 attributs - de classe : - - extensions : qui donne une liste d'extensions de fichier préconisées - - formats : qui donne une liste de formats de sortie supportés - """ - # Les extensions de fichier préconisées - extensions=('.ini','.conf') - # Les formats de sortie supportés (eval ou exec) - formats=('eval','dict') - - def __init__(self,cr=None): - ConfigParser.__init__(self) - # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard - if cr : - self.cr=cr - else: - self.cr=N_CR.CR(debut='CR convertisseur format ini', - fin='fin CR format ini') - - def readfile(self,filename): - try: - self.read(filename) - except Exception as e: - self.cr.fatal(tr("lecture du fichier impossible :")+str(e)) - - def convert(self,outformat,appli=None): - if outformat == 'eval': - return self.getdicttext() - elif outformat == 'dict': - return self.getdict() - else: - raise Exception("Format de sortie : %s, non supporte", outformat) - - - def getdicttext(self): - s='{' - for section in self.sections(): - s=s+ "'" + section + "' : {" - options=self.options(section) - for option in options: - value=self.get(section,option) - if value == '':value="None" - s=s+"'%s' : %s," % (option, value) - s=s+"}, " - s=s+"}" - return s - - def getdict(self): - s={} - for section in self.sections(): - s[section]=d={} - options=self.options(section) - for option in options: - value=self.get(section,option) - if value == '': - d[option]=None - else: - d[option]=eval(value) - return s - diff --git a/convert/convert_perfect.py b/convert/convert_perfect.py deleted file mode 100644 index a5c43d01..00000000 --- a/convert/convert_perfect.py +++ /dev/null @@ -1,38 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -""" -""" - -import parseur_python -from convert_python import * - -def entryPoint(): - """ - Retourne les informations nécessaires pour le chargeur de plugins - Ces informations sont retournées dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'perfect', - # La factory pour créer une instance du plugin - 'factory' : PythonParser, - } - - diff --git a/convert/convert_python6.py b/convert/convert_python6.py deleted file mode 100644 index d909a246..00000000 --- a/convert/convert_python6.py +++ /dev/null @@ -1,62 +0,0 @@ -# -*- coding: utf-8 -*- -# Copyright (C) 2007-2013 EDF R&D -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# -""" - Ce module contient le plugin convertisseur de fichier - au format python pour EFICAS. - - Un plugin convertisseur doit fournir deux attributs de classe : - extensions et formats et deux méthodes : readfile,convert. - - L'attribut de classe extensions est une liste d'extensions - de fichiers préconisées pour ce type de format. Cette information - est seulement indicative. - - L'attribut de classe formats est une liste de formats de sortie - supportés par le convertisseur. Les formats possibles sont : - eval, dict ou exec. - Le format eval est un texte source Python qui peut etre evalué. Le - résultat de l'évaluation est un objet Python quelconque. - Le format dict est un dictionnaire Python. - Le format exec est un texte source Python qui peut etre executé. - - La méthode readfile a pour fonction de lire un fichier dont le - nom est passé en argument de la fonction. - - convertisseur.readfile(nom_fichier) - - La méthode convert a pour fonction de convertir le fichier - préalablement lu dans un objet du format passé en argument. - - objet=convertisseur.convert(outformat) - - Ce convertisseur supporte le format de sortie exec - -""" -def entryPoint(): - """ - Retourne les informations nécessaires pour le chargeur de plugins - Ces informations sont retournées dans un dictionnaire - """ - return { - # Le nom du plugin - 'name' : 'python6', - # La factory pour créer une instance du plugin - 'factory' : PythonParser, - } - -from convert_python import PythonParser diff --git a/convert/parseur_python.py b/convert/parseur_python.py index 453809a7..4db7a13c 100644 --- a/convert/parseur_python.py +++ b/convert/parseur_python.py @@ -288,7 +288,7 @@ class PARSEUR_PYTHON(object): - les affectations - les commandes """ - pattern_commande = re.compile(r'^([A-Z][A-Z0-9_]+)([ \t\r\f\v]*)\(([\w\W]*)') + pattern_commande = re.compile(r'^([A-Z][a-zA-Z0-9_]+)([ \t\r\f\v]*)\(([\w\W]*)') pattern_eval = re.compile(r'^(EVAL)([ \t\r\f\v]*)\(([\w\W]*)') pattern_ligne_vide = re.compile(r'^[\t\r\f\v\n]+') pattern_name = re.compile(r'[a-zA-Z_]\w*') @@ -531,7 +531,6 @@ class PARSEUR_PYTHON(object): if self.is_commande(ligne): # --> nouvelle commande - #print ('nouvelle commande') affectation_courante = None commande_courante = COMMANDE(self) commande_courante.append_text(ligne) diff --git a/generator/generator_TELEMAC.py b/generator/generator_TELEMAC.py index 5a6ba744..fd095be6 100644 --- a/generator/generator_TELEMAC.py +++ b/generator/generator_TELEMAC.py @@ -36,7 +36,7 @@ extensions=('.comm',) try : from enumDicoTelemac import TelemacdicoEn DicoEnumCasEnInverse={} - for motClef in TelemacdicoEn(): + for motClef in TelemacdicoEn: d={} for valTelemac in TelemacdicoEn[motClef]: valEficas= TelemacdicoEn[motClef][valTelemac] @@ -44,7 +44,9 @@ try : DicoEnumCasEnInverse[motClef]=d except : - pass + pass + + def entryPoint(): @@ -99,6 +101,8 @@ class TELEMACGenerator(PythonGenerator): self.PE=False self.FE=False self.VE=False + self.commentaireAvant = False + self.texteCom='' if self.langue == "fr" : self.textPE = 'COTES IMPOSEES :' self.textFE = 'DEBITS IMPOSES :' @@ -140,9 +144,12 @@ class TELEMACGenerator(PythonGenerator): #---------------------------------------------------------------------------------------- def generPROC_ETAPE(self,obj): - self.texteDico += '/------------------------------------------------------/\n' - self.texteDico += '/\t\t\t'+obj.nom +'\n' - self.texteDico += '/------------------------------------------------------/\n' + if not self.commentaireAvant or self.texteCom.find(obj.nom) < 0: + self.texteDico += '/------------------------------------------------------------------/\n' + self.texteDico += '/\t\t\t'+obj.nom +'\n' + self.texteDico += '/------------------------------------------------------------------/\n' + self.commentaireAvant = False + self.texteCom='' s=PythonGenerator.generPROC_ETAPE(self,obj) if obj.nom in TELEMACGenerator.__dict__ : TELEMACGenerator.__dict__[obj.nom](*(self,obj)) @@ -167,19 +174,23 @@ class TELEMACGenerator(PythonGenerator): if s == "" : return s - + sTelemac=s[0:-1] if not( type(obj.valeur) in (tuple,list) ): if obj.nom in DicoEnumCasEnInverse: try : sTelemac=str(DicoEnumCasEnInverse[obj.nom][obj.valeur]) - except : print(("generMCSIMP Pb valeur avec ", obj.nom, obj.valeur)) + except : + if obj.valeur==None : sTelemac=obj.valeur + else : print(("generMCSIMP Pb valeur avec ", obj.nom, obj.valeur)) if type(obj.valeur) in (tuple,list) : if obj.nom in DicoEnumCasEnInverse: #sT = "'" sT='' for v in obj.valeur: try : sT +=str(DicoEnumCasEnInverse[obj.nom][v]) +";" - except : print(("generMCSIMP Pb Tuple avec ", obj.nom, v, obj.valeur)) + except : + if obj.definition.intoSug != [] : sT +=str(v) + ";" + else : print(("generMCSIMP Pb Tuple avec ", obj.nom, v, obj.valeur)) #sTelemac=sT[0:-1]+"'" sTelemac=sT[0:-1] else : @@ -328,3 +339,18 @@ class TELEMACGenerator(PythonGenerator): ligne=" "+str(v)+'; ' text+= ligne[0:-2]+'\n' return text + + def generCOMMENTAIRE(self,obj): + sans_saut = re.sub("\n$","",obj.valeur) + l_lignes = sans_saut.split('\n') + txt='/'+66*'-'+'/'+'\n' + i=1 + for ligne in l_lignes: + self.texteCom+=ligne+'\n' + txt = txt + '/'+ligne+'\n' + txt= txt + '/'+66*'-'+'/'+'\n' + self.texteDico += txt + self.commentaireAvant= True + return PythonGenerator.generCOMMENTAIRE(self,obj) + + diff --git a/generator/generator_dicoImbrique.py b/generator/generator_dicoImbrique.py index 72af2ad5..f8ee6bb1 100644 --- a/generator/generator_dicoImbrique.py +++ b/generator/generator_dicoImbrique.py @@ -60,9 +60,11 @@ class DicoImbriqueGenerator(PythonGenerator): # Cette instruction genere le contenu du fichier de commandes (persistance) self.text=PythonGenerator.gener(self,obj,format) + #print (self.text) return self.text + #---------------------------------------------------------------------------------------- # initialisations #---------------------------------------------------------------------------------------- diff --git a/generator/generator_python.py b/generator/generator_python.py index 4cd1a786..024d58fb 100644 --- a/generator/generator_python.py +++ b/generator/generator_python.py @@ -101,16 +101,28 @@ class PythonGenerator(object): Si format vaut 'standard', retourne un texte obtenu par concatenation de la liste Si format vaut 'beautifie', retourne le meme texte beautifie """ + import logging self.appli=obj.get_jdc_root().appli #self.appli=obj.appli liste= self.generator(obj) + #format='standard' if format == 'brut': self.text=liste elif format == 'standard': self.text=''.join(liste) elif format == 'beautifie': jdc_formate = Formatage(liste,mode='.py') + #import cProfile, pstats, StringIO + #pr = cProfile.Profile() + #pr.enable() self.text=jdc_formate.formate_jdc() + #pr.disable() + #s = StringIO.StringIO() + #sortby = 'cumulative' + #ps = pstats.Stats(pr, stream=s).sort_stats(sortby) + #ps.print_stats() + #print (s.getvalue()) + elif format == 'Ligne': jdc_formate = FormatageLigne(liste,mode='.py') self.text=jdc_formate.formate_jdc() -- 2.39.2