1 # -*- coding: utf-8 -*-
3 # Copyright (C) 2008-2018 EDF R&D
5 # This file is part of SALOME ADAO module
7 # This library is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU Lesser General Public
9 # License as published by the Free Software Foundation; either
10 # version 2.1 of the License.
12 # This library is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 # Lesser General Public License for more details.
17 # You should have received a copy of the GNU Lesser General Public
18 # License along with this library; if not, write to the Free Software
19 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 # Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
27 import Traducteur.log as log
28 from Traducteur.load import getJDC, getJDCFromTexte
29 from Traducteur.mocles import parseKeywords
30 from Traducteur.dictErreurs import GenereErreurPourCommande
31 from Traducteur.inseremocle import *
32 from Traducteur.movemocle import *
33 from Traducteur.renamemocle import *
35 version_out = "V9_5_0"
37 usage="""Usage: python %(prog)s [args]
40 python %(prog)s --infile=xxxx.comm --outfile=yyyy.comm"""
48 "ASSIMILATION_STUDY":"Changements dans l'arbre et dans les noms",
49 "CHECKING_STUDY":"Changements dans l'arbre et dans les noms",
52 sys.dict_erreurs=dict_erreurs
54 def traduc(infile=None,outfile=None,texte=None,flog=None):
55 hdlr = log.initialise(flog)
56 if infile is not None:
57 jdc = getJDC(infile,atraiter)
58 elif texte is not None:
59 jdc = getJDCFromTexte(texte,atraiter)
61 raise ValueError("Traduction du JDC impossible")
63 #Parse les mocles des commandes
64 parseKeywords(jdc.root)
65 GenereErreurPourCommande(jdc,('Algorithm','AlgorithmParameters','FunctionDict'))
66 # ==========================================================================
68 for command in atraiter:
69 # Insere le MC s'il n'existe pas
70 chercheOperInsereFacteurSiRegle(jdc, command, "AlgorithmParameters",((("AlgorithmParameters",),"nexistepasMCFParmi"),))
72 moveMotClefInOperToFact(jdc, command, "Algorithm", "AlgorithmParameters", plusieursFois=False)
74 renameMotCleInFact(jdc, command, "AlgorithmParameters", "INPUT_TYPE", "Parameters")
76 renameMotCle(jdc, command, "Study_name", "StudyName")
77 renameMotCle(jdc, command, "Study_repertory", "StudyRepertory")
79 # ==========================================================================
80 fsrc = jdc.getSource()
81 fsrc = re.sub( "FunctionDict", "ScriptWithSwitch", fsrc )
82 fsrc = re.sub( "FUNCTIONDICT_FILE", "SCRIPTWITHSWITCH_FILE", fsrc )
83 fsrc = re.sub( "#VERSION_CATALOGUE:.*:FIN VERSION_CATALOGUE", "#VERSION_CATALOGUE:%s:FIN VERSION_CATALOGUE"%version_out, fsrc)
84 fsrc = re.sub( "#CHECKSUM.*FIN CHECKSUM", "", fsrc )
87 if outfile is not None:
88 with open(outfile,'w') as f:
94 def __init__(self,texte):
95 self.__texte = str(texte)
97 return traduc(infile=None,outfile=None,texte=self.__texte,flog=None)
100 parser = argparse.ArgumentParser(usage=usage)
102 parser.add_argument('-i','--infile', dest="infile",
103 help="Le fichier COMM en entree, a traduire")
104 parser.add_argument('-o','--outfile', dest="outfile", default='out.comm',
105 help="Le fichier COMM en sortie, traduit")
107 args = parser.parse_args()
108 if len(args.infile) == 0:
114 traduc(args.infile,args.outfile)
116 if __name__ == '__main__':