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