Salome HOME
CCAR:amelioration de la fonctionnalité mots clés inconnus
[tools/eficas.git] / Noyau / N_REGLE.py
1 """
2     Ce module contient la classe mere pour les classes de definition des regles d exclusion.
3
4     La classe REGLE est la classe de base : elle est virtuelle, elle ne doit pas etre instanciee.
5
6     Les classes regles dérivées qui seront instanciées doivent implementer la methode verif
7     dont l argument est le dictionnaire des mots cles effectivement presents
8     sur lesquels sera operee la verification de la regle
9
10     A la creation de l'objet regle on lui passe la liste des noms de mots cles concernes
11
12     Exemple ::
13
14     # Création de l'objet règle UNPARMI
15     r=UNPARMI("INFO","AFFE")
16     # Vérification de la règle r sur le dictionnaire passé en argument
17     r.verif({"INFO":v1,"AFFE":v2)
18 """
19
20 import types
21
22 class REGLE:
23    def __init__(self,*args):
24       """
25           Les classes dérivées peuvent utiliser cet initialiseur par défaut ou
26           le surcharger
27       """
28       self.mcs=args
29
30    def verif(self,args):
31       """
32          Les classes dérivées doivent implémenter cette méthode
33          qui doit retourner une paire dont le premier élément est une chaine de caractère
34          et le deuxième un entier.
35  
36          L'entier peut valoir 0 ou 1. -- s'il vaut 1, la règle est vérifiée
37           s'il vaut 0, la règle n'est pas vérifiée et le texte joint contient
38          un commentaire de la non validité.
39       """
40       raise "NotImplemented : class REGLE should be derived"
41
42    def liste_to_dico(self,args):
43       """
44          Cette méthode est utilitaire pour les seuls besoins
45          des classes dérivées. 
46
47          Elle transforme une liste de noms de mots clés en un 
48          dictionnaire équivalent dont les clés sont les noms des mts-clés
49
50          Ceci permet d'avoir un traitement identique pour les listes et les dictionnaires
51       """
52       if type(args) == types.DictionaryType:
53         return args
54       elif type(args) == types.ListType:
55         dico={}
56         for arg in args :
57           dico[arg]=0
58         return dico
59       else :
60         raise "Erreur ce n'est ni un dictionnaire ni une liste",args
61
62