Salome HOME
7268f03dac31a83ebb6448cf4d9691771a66f584
[tools/eficas.git] / Accas / A_VALIDATOR.py
1 import types
2 from Noyau import N_VALIDATOR
3 from Ihm import I_VALIDATOR
4
5 class FunctionVal(I_VALIDATOR.FunctionVal,N_VALIDATOR.FunctionVal):pass
6 class OrVal(I_VALIDATOR.OrVal,N_VALIDATOR.OrVal):pass
7 class AndVal(I_VALIDATOR.AndVal,N_VALIDATOR.AndVal):pass
8 class NoRepeat(I_VALIDATOR.NoRepeat,N_VALIDATOR.NoRepeat):pass
9 class LongStr(I_VALIDATOR.LongStr,N_VALIDATOR.LongStr):pass
10 class OrdList(I_VALIDATOR.OrdList,N_VALIDATOR.OrdList):pass
11 class RangeVal(I_VALIDATOR.RangeVal,N_VALIDATOR.RangeVal):pass
12 class EnumVal(I_VALIDATOR.EnumVal,N_VALIDATOR.EnumVal):pass
13 class TypeVal(I_VALIDATOR.TypeVal,N_VALIDATOR.TypeVal):pass
14 class PairVal(I_VALIDATOR.PairVal,N_VALIDATOR.PairVal):pass
15 class CardVal(I_VALIDATOR.CardVal,N_VALIDATOR.CardVal):pass
16 class InstanceVal(I_VALIDATOR.InstanceVal,N_VALIDATOR.InstanceVal):pass
17
18 def do_liste(validators):
19     """
20        Convertit une arborescence de validateurs en OrVal ou AndVal
21        validators est une liste de validateurs ou de listes ou de tuples
22     """
23     valids=[]
24     for validator in validators:
25         if type(validator) == types.FunctionType:
26            valids.append(FunctionVal(validator))
27         elif type(validator) == types.TupleType:
28            valids.append(OrVal(do_liste(validator)))
29         elif type(validator) == types.ListType:
30            valids.append(AndVal(do_liste(validator)))
31         else:
32            valids.append(validator)
33     return valids
34
35 def validatorFactory(validator):
36     if type(validator) == types.FunctionType:
37        return FunctionVal(validator)
38     elif type(validator) == types.TupleType:
39        return OrVal(do_liste(validator))
40     elif type(validator) == types.ListType:
41        return AndVal(do_liste(validator))
42     else:
43        return validator
44