1 # -*- coding: utf-8 -*-
4 #from parseur import FactNode
12 def __init__(self,liste_regles):
14 for item in liste_regles :
16 r=regle(clefRegle,args)
19 def verif(self,commande) :
21 for regle in self.liste :
22 result=regle.verif(commande)
26 #--------------------------------
27 class pasDeRegle(ensembleRegles):
28 #--------------------------------
32 def verif (self,commande) :
40 def __init__(self,clef_regle,args):
41 self.fonction=dictionnaire_regle[clef_regle]
45 def verif(self,commande):
46 f=self.fonction(self.list_args)
47 return f.verif(commande)
49 #---------------------
50 class existeMCFParmi :
51 #---------------------
52 def __init__(self,list_arg):
53 self.listeMCF=list_arg;
55 def verif(self,commande):
57 for c in commande.childNodes :
58 if c.name in self.listeMCF :
63 #----------------------
64 class existeMCsousMCF :
65 #----------------------
66 def __init__(self,list_arg):
68 self.MCF=self.liste[0]
71 def verif(self,commande):
73 for mcf in commande.childNodes :
74 if mcf.name != self.MCF : continue
78 for mc in ll.childNodes:
79 if mc.name != self.MC : continue
83 #----------------------
84 class existeMCsousMCFcourant :
85 #----------------------
86 def __init__(self,list_arg):
95 if mc.name != self.MC : continue
99 #-----------------------------------------
100 class nexistepasMCsousMCF(existeMCsousMCF):
101 #-----------------------------------------
102 def __init__(self,list_arg):
103 existeMCsousMCF.__init__(self,list_arg)
106 def verif(self,commande):
107 bool=existeMCsousMCF.verif(self,commande)
111 #-----------------------------------------
112 class nexistepasMCsousMCFcourant(existeMCsousMCFcourant):
113 #-----------------------------------------
114 def __init__(self,list_arg):
115 existeMCsousMCFcourant.__init__(self,list_arg)
118 def verif(self,commande):
119 bool=existeMCsousMCFcourant.verif(self,commande)
126 def __init__(self,list_arg):
129 def cherche_mot(self,niveau,commande):
130 if commande == None : return 0
131 if niveau == len(self.genea) : return 1
132 texte=self.genea[niveau]
133 for c in commande.childNodes :
136 return self.cherche_mot(niveau,c)
139 def verif(self,commande):
140 bool=self.cherche_mot(0,commande)
141 if bool == None : bool = 0
147 def __init__(self,list_arg):
150 def cherche_mot(self,niveau,commande):
151 if commande == None : return 0
152 if niveau == len(self.genea) : return 1
153 texte=self.genea[niveau]
154 for c in commande.childNodes :
157 return self.cherche_mot(niveau,c)
160 def verif(self,commande):
161 bool=self.cherche_mot(0,commande)
165 #-------------------------------
166 class MCsousMCFaPourValeur :
167 #------------------------------
168 def __init__(self,list_arg):
169 assert (len(list_arg)==4)
170 self.genea=list_arg[0:-2]
176 def verif(self,commande):
178 for mcf in commande.childNodes :
179 if mcf.name != self.MCF : continue
183 for mc in ll.childNodes:
184 if mc.name != self.MC : continue
185 TexteMC=mc.getText(self.Jdc)
186 if (TexteMC.find(self.Val) < 0 ): continue
190 #-------------------------------
191 class MCsousMCFcourantaPourValeur :
192 #------------------------------
193 def __init__(self,list_arg):
194 assert (len(list_arg)==3)
195 self.genea=list_arg[0:-1]
205 if mc.name != self.MC : continue
206 TexteMC=mc.getText(self.Jdc)
207 if (TexteMC.find(self.Val) < 0 ): continue
212 #-----------------------------
213 class MCsousMCFaPourValeurDansListe :
214 #----------------------------
215 def __init__(self,list_arg):
216 assert (len(list_arg)==4)
217 self.genea=list_arg[0:-2]
220 self.LVal=list_arg[2]
223 def verif(self,commande):
225 for mcf in commande.childNodes :
226 if mcf.name != self.MCF : continue
230 for mc in ll.childNodes:
231 if mc.name != self.MC : continue
232 TexteMC=mc.getText(self.Jdc)
233 for Val in self.LVal:
234 if (TexteMC.find(Val) < 0 ): continue
238 #-----------------------------
239 class MCsousMCFcourantaPourValeurDansListe :
240 #----------------------------
241 def __init__(self,list_arg):
242 assert (len(list_arg)==3)
243 self.genea=list_arg[0:-1]
245 self.LVal=list_arg[1]
253 if mc.name != self.MC : continue
254 TexteMC=mc.getText(self.Jdc)
255 for Val in self.LVal:
256 if (TexteMC.find(Val) < 0 ): continue
260 #-------------------------------
261 class MCaPourValeur :
262 #------------------------------
263 def __init__(self,list_arg):
264 assert (len(list_arg)==3)
269 def verif(self,commande):
271 for mc in commande.childNodes :
272 if mc.name != self.MC : continue
273 TexteMC=mc.getText(self.Jdc)
274 if (TexteMC.find(self.Val) < 0 ): continue
278 dictionnaire_regle={"existe":existe,"nexistepas":nexistepas,"existeMCFParmi":existeMCFParmi,"existeMCsousMCF":existeMCsousMCF,"nexistepasMCsousMCF":nexistepasMCsousMCF,"MCsousMCFaPourValeur":MCsousMCFaPourValeur,"MCsousMCFaPourValeurDansListe":MCsousMCFaPourValeurDansListe,"MCaPourValeur":MCaPourValeur,"existeMCsousMCFcourant":existeMCsousMCFcourant,"nexistepasMCsousMCFcourant":nexistepasMCsousMCFcourant,"MCsousMCFcourantaPourValeur":MCsousMCFcourantaPourValeur,"MCsousMCFcourantaPourValeurDansListe":MCsousMCFcourantaPourValeurDansListe}
279 SansRegle=pasDeRegle()