2 Ce module contient le plugin convertisseur de fichier
3 au format python pour EFICAS.
5 Un plugin convertisseur doit fournir deux attributs de classe :
6 extensions et formats et deux méthodes : readfile,convert.
8 L'attribut de classe extensions est une liste d'extensions
9 de fichiers préconisées pour ce type de format. Cette information
10 est seulement indicative.
12 L'attribut de classe formats est une liste de formats de sortie
13 supportés par le convertisseur. Les formats possibles sont :
15 Le format eval est un texte source Python qui peut etre evalué. Le
16 résultat de l'évaluation est un objet Python quelconque.
17 Le format dict est un dictionnaire Python.
18 Le format exec est un texte source Python qui peut etre executé.
20 La méthode readfile a pour fonction de lire un fichier dont le
21 nom est passé en argument de la fonction.
22 convertisseur.readfile(nom_fichier)
24 La méthode convert a pour fonction de convertir le fichier
25 préalablement lu dans un objet du format passé en argument.
26 objet=convertisseur.convert(outformat)
28 Ce convertisseur supporte le format de sortie exec
31 import sys,string,traceback
34 from Noyau import N_CR
38 Retourne les informations nécessaires pour le chargeur de plugins
39 Ces informations sont retournées dans un dictionnaire
44 # La factory pour créer une instance du plugin
45 'factory' : PythonParser,
51 Ce convertisseur lit un fichier au format python avec la
52 methode readfile : convertisseur.readfile(nom_fichier)
53 et retourne le texte au format outformat avec la
54 methode convertisseur.convert(outformat)
56 Ses caractéristiques principales sont exposées dans 2 attributs
59 - extensions : qui donne une liste d'extensions de fichier préconisées
61 - formats : qui donne une liste de formats de sortie supportés
63 # Les extensions de fichier préconisées
65 # Les formats de sortie supportés (eval dict ou exec)
66 # Le format exec est du python executable (commande exec) converti avec PARSEUR_PYTHON
67 # Le format execnoparseur est du python executable (commande exec) non converti
68 formats=('exec','execnoparseur')
70 def __init__(self,cr=None):
71 # Si l'objet compte-rendu n'est pas fourni, on utilise le
72 # compte-rendu standard
77 self.cr=N_CR.CR(debut='CR convertisseur format python',
78 fin='fin CR format python')
80 def readfile(self,filename):
81 self.filename=filename
83 self.text=open(filename).read()
85 self.cr.fatal("Impossible ouvrir fichier %s" % filename)
88 def convert(self,outformat):
89 if outformat == 'exec':
91 return parseur_python.PARSEUR_PYTHON(self.text).get_texte()
93 # Erreur lors de la conversion
94 l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],
96 self.cr.exception("Impossible de convertir le fichier python \
97 qui doit contenir des erreurs.\n \
98 On retourne le fichier non converti \n \
99 Prévenir la maintenance. \n" + string.join(l))
100 # On retourne néanmoins le source initial non converti (au cas où)
102 elif outformat == 'execnoparseur':
105 raise "Format de sortie : %s, non supporté"