diff options
author | Jon Dufresne <jon.dufresne@gmail.com> | 2019-10-31 21:10:28 -0700 |
---|---|---|
committer | Paul McGuire <ptmcg@users.noreply.github.com> | 2019-10-31 23:10:28 -0500 |
commit | 53d1b4a6f48a53c4c4ec4ac7031362b691c0366d (patch) | |
tree | 088ad3cf3561b78a00af4fb2fd474f4a2b8ca70c /examples/rangeCheck.py | |
parent | 41752aa52cc97c710474bb2972cceab057b52ad4 (diff) | |
download | pyparsing-git-53d1b4a6f48a53c4c4ec4ac7031362b691c0366d.tar.gz |
Blacken the project (#141)
Diffstat (limited to 'examples/rangeCheck.py')
-rw-r--r-- | examples/rangeCheck.py | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/examples/rangeCheck.py b/examples/rangeCheck.py index 66af545..2d1d2c8 100644 --- a/examples/rangeCheck.py +++ b/examples/rangeCheck.py @@ -11,6 +11,7 @@ from pyparsing import Word, nums, Suppress, Optional
from datetime import datetime
+
def ranged_value(expr, minval=None, maxval=None):
# have to specify at least one range boundary
if minval is None and maxval is None:
@@ -19,27 +20,28 @@ def ranged_value(expr, minval=None, maxval=None): # set range testing function and error message depending on
# whether either or both min and max values are given
inRangeCondition = {
- (True, False) : lambda s,l,t : t[0] <= maxval,
- (False, True) : lambda s,l,t : minval <= t[0],
- (False, False) : lambda s,l,t : minval <= t[0] <= maxval,
- }[minval is None, maxval is None]
+ (True, False): lambda s, l, t: t[0] <= maxval,
+ (False, True): lambda s, l, t: minval <= t[0],
+ (False, False): lambda s, l, t: minval <= t[0] <= maxval,
+ }[minval is None, maxval is None]
outOfRangeMessage = {
- (True, False) : "value is greater than %s" % maxval,
- (False, True) : "value is less than %s" % minval,
- (False, False) : "value is not in the range ({} to {})".format(minval,maxval),
- }[minval is None, maxval is None]
+ (True, False): "value is greater than %s" % maxval,
+ (False, True): "value is less than %s" % minval,
+ (False, False): "value is not in the range ({} to {})".format(minval, maxval),
+ }[minval is None, maxval is None]
return expr().addCondition(inRangeCondition, message=outOfRangeMessage)
+
# define the expressions for a date of the form YYYY/MM/DD or YYYY/MM (assumes YYYY/MM/01)
integer = Word(nums).setName("integer")
-integer.setParseAction(lambda t:int(t[0]))
+integer.setParseAction(lambda t: int(t[0]))
month = ranged_value(integer, 1, 12)
day = ranged_value(integer, 1, 31)
year = ranged_value(integer, 2000, None)
-SLASH = Suppress('/')
+SLASH = Suppress("/")
dateExpr = year("year") + SLASH + month("month") + Optional(SLASH + day("day"))
dateExpr.setName("date")
@@ -47,14 +49,16 @@ dateExpr.setName("date") dateExpr.setParseAction(lambda t: datetime(t.year, t.month, t.day or 1).date())
# add range checking on dates
-mindate = datetime(2002,1,1).date()
+mindate = datetime(2002, 1, 1).date()
maxdate = datetime.now().date()
dateExpr = ranged_value(dateExpr, mindate, maxdate)
-dateExpr.runTests("""
+dateExpr.runTests(
+ """
2011/5/8
2001/1/1
2004/2/29
2004/2
- 1999/12/31""")
+ 1999/12/31"""
+)
|