2 Ce module contient le plugin generateur de fichier
3 au format ini pour EFICAS.
10 from Noyau import N_CR
11 from Accas import MCSIMP,MCFACT
15 Retourne les informations nécessaires pour le chargeur de plugins
16 Ces informations sont retournées dans un dictionnaire
21 # La factory pour créer une instance du plugin
22 'factory' : IniGenerator,
28 Ce generateur parcourt un objet de type MCFACT et produit
29 un fichier au format ini
30 L'acquisition et le parcours sont réalisés par le méthode
31 generator.gener(objet_mcfact)
32 L'écriture du fichier au format ini par appel de la méthode
33 generator.writefile(nom_fichier)
35 Ses caractéristiques principales sont exposées dans des attributs
38 - extensions : qui donne une liste d'extensions de fichier préconisées
41 # Les extensions de fichier préconisées
42 extensions=('.ini','.conf')
44 def __init__(self,cr=None):
45 # Si l'objet compte-rendu n'est pas fourni, on utilise le compte-rendu standard
49 self.cr=N_CR.CR(debut='CR generateur format ini',
50 fin='fin CR format ini')
51 # Le texte au format ini est stocké dans l'attribut text
54 def writefile(self,filename):
61 Tous les mots-clés simples du niveau haut sont mis dans la section DEFAUT
62 Tous les mots-clés facteurs sont convertis en sections
63 Un mot-clé facteur ne peut contenir que des mots-clés simples. Sinon => erreur
67 for mocle in obj.mc_liste:
68 if isinstance(mocle,MCFACT):
69 liste_mcfact.append(self.generMCFACT(mocle))
70 elif isinstance(mocle,MCSIMP):
71 sect_defaut=sect_defaut+self.generMCSIMP(mocle)
73 self.cr.fatal("Entite inconnue ou interdite : "+`mocle`)
76 self.text="[DEFAULT]\n"+sect_defaut
77 self.text=self.text + string.join(liste_mcfact,'\n')
80 def generMCFACT(self,obj):
82 Cette méthode convertit un mot-clé facteur ne contenant que des mots-clés
83 simples en une chaine de caractères
85 sect_text='[%s]\n' % obj.nom
86 for mocle in obj.mc_liste:
87 if isinstance(mocle,MCSIMP):
88 sect_text=sect_text+self.generMCSIMP(mocle)
90 self.cr.fatal("Entite inconnue ou interdite : "+`mocle`+" Elle est ignorée")
93 def generMCSIMP(self,obj):
95 Cette méthode convertit un mot-clé simple en une chaine de caractères
99 if type(obj.valeur) == types.TupleType :
100 self.cr.fatal("Les tuples ne sont pas supportés pour le format ini : "+ obj.nom)
101 s="%s = %s\n" % (obj.nom,"ERREUR")
104 s="%s = %s\n" % (obj.nom,obj.valeur)
106 self.cr.fatal("Type de valeur non supporté par le format ini : "+ obj.nom + '\n'+str(e))
107 s="%s = %s\n" % (obj.nom,"ERREUR")