Initial revision
[blender.git] / intern / python / modules / mcf / utils / rangeval.py
1 ''' Classes which match ranges, sets, or anything at all. '''
2 import dummy # provides storage functions as well as a few others
3
4 class BetwVal(dummy.Dummy):
5         '''
6         Matches any object greater than smaller and less than larger
7         '''
8         def __init__(self, first, second):
9                 if first <= second:
10                         dummy.Dummy.__init__(self, [first, second])
11                 else:
12                         dummy.Dummy.__init__(self, [second, first])
13         def __getinitargs__(self):
14                 return (self._base[0], self._base[1])
15         def __cmp__(self, object):
16                 '''The Guts of the Class, allows standard comparison operators'''
17                 if self._base[0]<=object:
18                         if self._base[1] >=object:
19                                 return 0
20                         else: return 1
21                 else: return -1
22         def __repr__(self):
23                 return '%s(%s,%s)'% (self.__class__.__name__,`self._base[0]`,`self._base[1]`)
24
25 class WInVal(dummy.Dummy):
26         '''
27         Matches any value in the sequential object used as initialiser
28         Doesn't gracefully handle situations where not found, as it just
29         returns a -1
30         '''
31         def __init__(self,seq):
32                 self._base = seq
33         def __cmp__(self, object):
34                 ''' Standard comparison operators '''
35                 for x in self._base:
36                         if x == object:
37                                 return 0
38                 return -1
39         def __repr__(self):
40                 return '%s(%s)'% (self.__class__.__name__,`self._base`)
41
42 class ExceptVal(WInVal):
43         '''
44         A negative Version of WInVal
45         '''
46         def __cmp__(self, object):
47                 for x in self._base:
48                         if x == object:
49                                 return -1
50                 return 0
51
52 class AnyVal:
53         '''
54         Matches anything at all
55         '''
56         def __init__(self):
57                 pass
58         def __getinitargs__(self):
59                 return ()
60         def __cmp__(self, object):
61                 return 0
62         def __repr__(self):
63                 return 'AnyVal()'
64