/
comparable.py
92 lines (60 loc) · 2.05 KB
/
comparable.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from gutter.client.operators import Base
from gutter.client.registry import operators
class Equals(Base):
name = 'equals'
group = 'comparable'
preposition = 'equal to'
arguments = ('value',)
def applies_to(self, argument):
return argument == self.value
def __str__(self):
return 'equal to "%s"' % self.value
class Between(Base):
name = 'between'
group = 'comparable'
preposition = 'between'
arguments = ('lower_limit', 'upper_limit')
def applies_to(self, argument):
return argument > self.lower_limit and argument < self.upper_limit
def __str__(self):
return 'between "%s" and "%s"' % (self.lower_limit, self.upper_limit)
class LessThan(Base):
name = 'before'
group = 'comparable'
preposition = 'less than'
arguments = ('upper_limit',)
def applies_to(self, argument):
return argument < self.upper_limit
def __str__(self):
return 'less than "%s"' % self.upper_limit
class LessThanOrEqualTo(LessThan):
name = 'less_than_or_equal_to'
group = 'comparable'
preposition = 'less than or equal to'
def applies_to(self, argument):
return argument <= self.upper_limit
def __str__(self):
return 'less than or equal to "%s"' % self.upper_limit
class MoreThan(Base):
name = 'more_than'
group = 'comparable'
preposition = 'more than'
arguments = ('lower_limit',)
def applies_to(self, argument):
return argument > self.lower_limit
def __str__(self):
return 'more than "%s"' % self.lower_limit
class MoreThanOrEqualTo(MoreThan):
name = 'more_than_or_equal_to'
group = 'comparable'
preposition = 'more than or equal to'
def applies_to(self, argument):
return argument >= self.lower_limit
def __str__(self):
return 'more than or equal to "%s"' % self.lower_limit
operators.register(Equals)
operators.register(Between)
operators.register(LessThan)
operators.register(LessThanOrEqualTo)
operators.register(MoreThan)
operators.register(MoreThanOrEqualTo)