Salome HOME
modif pour MT
[tools/eficas.git] / Noyau / N_REGLE.py
1 # coding=utf-8
2 # Copyright (C) 2007-2017   EDF R&D
3 #
4 # This library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License.
8 #
9 # This library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 # Lesser General Public License for more details.
13 #
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 #
18 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
19
20
21 """
22     Ce module contient la classe mere pour les classes de definition des regles d exclusion.
23
24     La classe REGLE est la classe de base : elle est virtuelle, elle ne doit pas etre instanciee.
25
26     Les classes regles dérivées qui seront instanciées doivent implementer la methode verif
27     dont l argument est le dictionnaire des mots cles effectivement presents
28     sur lesquels sera operee la verification de la regle
29
30     A la creation de l'objet regle on lui passe la liste des noms de mots cles concernes
31
32     Exemple ::
33
34     # Création de l'objet règle UNPARMI
35     r=UNPARMI("INFO","AFFE")
36     # Vérification de la règle r sur le dictionnaire passé en argument
37     r.verif({"INFO":v1,"AFFE":v2)
38 """
39
40 from __future__ import absolute_import
41 try : 
42    from builtins import object
43 except :
44    pass
45 import types
46
47
48 class REGLE(object):
49
50     def __init__(self, *args):
51         """
52             Les classes dérivées peuvent utiliser cet initialiseur par défaut ou
53             le surcharger
54         """
55         self.mcs = args
56
57     def verif(self, args):
58         """
59            Les classes dérivées doivent implémenter cette méthode
60            qui doit retourner une paire dont le premier élément est une chaine de caractère
61            et le deuxième un entier.
62
63            L'entier peut valoir 0 ou 1. -- s'il vaut 1, la règle est vérifiée
64             s'il vaut 0, la règle n'est pas vérifiée et le texte joint contient
65            un commentaire de la non validité.
66         """
67         raise NotImplementedError('class REGLE should be derived')
68
69     def listeToDico(self, args):
70         """
71            Cette méthode est utilitaire pour les seuls besoins
72            des classes dérivées.
73
74            Elle transforme une liste de noms de mots clés en un
75            dictionnaire équivalent dont les clés sont les noms des mts-clés
76
77            Ceci permet d'avoir un traitement identique pour les listes et les dictionnaires
78         """
79         if type(args) == dict:
80             return args
81         elif type(args) == list:
82             dico = {}
83             for arg in args:
84                 dico[arg] = 0
85             return dico
86         else:
87             raise Exception(
88                 "Erreur ce n'est ni un dictionnaire ni une liste %s" % args)