fix some future parsing
This commit is contained in:
parent
7a434b9422
commit
d150f610ec
@ -26,14 +26,14 @@ r_time_in = re.compile('(?:time)?\s*in\s*(.*)', flags=re.IGNORECASE)
|
|||||||
r_time_since = re.compile('(?:time)?\s*since\s*(.*)', flags=re.IGNORECASE)
|
r_time_since = re.compile('(?:time)?\s*since\s*(.*)', flags=re.IGNORECASE)
|
||||||
r_time_until = re.compile('(?:time)?\s*until\s*(.*)', flags=re.IGNORECASE)
|
r_time_until = re.compile('(?:time)?\s*until\s*(.*)', flags=re.IGNORECASE)
|
||||||
r_time_between = re.compile('(?:time)?\s*between\s*(.*)\s*and\s*(.*)', flags=re.IGNORECASE)
|
r_time_between = re.compile('(?:time)?\s*between\s*(.*)\s*and\s*(.*)', flags=re.IGNORECASE)
|
||||||
r_workdays_since = re.compile('(?:workdays|work days)?\s*since\s*(.*)', flags=re.IGNORECASE)
|
r_workdays_since = re.compile('(?:workdays|work days)\s*since\s*(.*)', flags=re.IGNORECASE)
|
||||||
r_workdays_until = re.compile('(?:workdays|work days)?\s*until\s*(.*)', flags=re.IGNORECASE)
|
r_workdays_until = re.compile('(?:workdays|work days)\s*until\s*(.*)', flags=re.IGNORECASE)
|
||||||
r_workdays_between = re.compile('(?:workdays|work days)?\s*between\s*(.*)\s*and\s*(.*)', flags=re.IGNORECASE)
|
r_workdays_between = re.compile('(?:workdays|work days)\s*between\s*(.*)\s*and\s*(.*)', flags=re.IGNORECASE)
|
||||||
r_workhours_since = re.compile('(?:workhours|work hours)?\s*since\s*(.*)', flags=re.IGNORECASE)
|
r_workhours_since = re.compile('(?:workhours|work hours)\s*since\s*(.*)', flags=re.IGNORECASE)
|
||||||
r_workhours_until = re.compile('(?:workhours|work hours)?\s*until\s*(.*)', flags=re.IGNORECASE)
|
r_workhours_until = re.compile('(?:workhours|work hours)\s*until\s*(.*)', flags=re.IGNORECASE)
|
||||||
r_workhours_between = re.compile('(?:workhours|work hours)?\s*between\s*(.*)\s*and\s*(.*)', flags=re.IGNORECASE)
|
r_workhours_between = re.compile('(?:workhours|work hours)\s*between\s*(.*)\s*and\s*(.*)', flags=re.IGNORECASE)
|
||||||
r_timezone_translation = re.compile('(.*)?\s(?:in|to)\s(.*)', flags=re.IGNORECASE)
|
r_timezone_translation = re.compile('(.*)?\s(?:in|to)\s(.*)', flags=re.IGNORECASE)
|
||||||
r_timezone = re.compile('(.*)?\s(?:timezone|timezones|tz)', flags=re.IGNORECASE)
|
r_timezone = re.compile('(.*)\s(?:timezone|timezones|tz)', flags=re.IGNORECASE)
|
||||||
r_timezone_2 = re.compile('(?:timezone in|timezones in|tz in|timezone|timezones|tz)\s(.*)?', flags=re.IGNORECASE)
|
r_timezone_2 = re.compile('(?:timezone in|timezones in|tz in|timezone|timezones|tz)\s(.*)?', flags=re.IGNORECASE)
|
||||||
|
|
||||||
|
|
||||||
|
@ -484,9 +484,9 @@ def custom_dt_parse(query):
|
|||||||
return query
|
return query
|
||||||
|
|
||||||
|
|
||||||
r_next = re.compile('(?:next)?\s*(.*)', flags=re.IGNORECASE)
|
r_next = re.compile('(?:next)\s*(.*)', flags=re.IGNORECASE)
|
||||||
r_prev = re.compile('(?:last|prev|previous)?\s*(.*)', flags=re.IGNORECASE)
|
r_prev = re.compile('(?:last|prev|previous)\s*(.*)', flags=re.IGNORECASE)
|
||||||
r_this = re.compile('(?:this|that)?\s*(.*)', flags=re.IGNORECASE)
|
r_this = re.compile('(?:this|that)\s*(.*)', flags=re.IGNORECASE)
|
||||||
|
|
||||||
|
|
||||||
def get_local_now_parsed(s):
|
def get_local_now_parsed(s):
|
||||||
@ -686,25 +686,24 @@ def time_to_emoji(dt):
|
|||||||
def workday_diff(start, end, workdays=None):
|
def workday_diff(start, end, workdays=None):
|
||||||
"""
|
"""
|
||||||
Calculates the difference between two dates excluding weekends
|
Calculates the difference between two dates excluding weekends
|
||||||
|
|
||||||
# TODO: doesn't work with Until (i.e. future calculation)
|
|
||||||
"""
|
"""
|
||||||
|
if start > end:
|
||||||
|
start, end = end, start
|
||||||
if not workdays:
|
if not workdays:
|
||||||
workdays = range(0, 5)
|
workdays = range(0, 5)
|
||||||
td = end - start
|
td = end - start
|
||||||
daygenerator = (start + timedelta(x + 1) for x in range(td.days))
|
daygenerator = (start + timedelta(x + 1) for x in range(td.days))
|
||||||
weekdays = sum(1 for day in daygenerator if day.weekday() in workdays)
|
weekdays = sum(1 for day in daygenerator if day.weekday() in workdays)
|
||||||
return timedelta(days=weekdays)
|
return timedelta(days=weekdays, seconds=td.seconds)
|
||||||
|
|
||||||
|
|
||||||
def workhours_diff(start, end, workhour_begin="09:00", workhour_end="17:00", workdays=None):
|
def workhours_diff(start, end, workhour_begin="09:00", workhour_end="17:00", workdays=None):
|
||||||
"""
|
"""
|
||||||
Calculates the difference between two dates excluding non-workhours
|
Calculates the difference between two dates excluding non-workhours
|
||||||
This can potentially be very slow for long ranges as it calculates per minute resolution.
|
This can potentially be very slow for long ranges as it calculates per minute resolution.
|
||||||
|
|
||||||
# TODO: doesn't work with Until (i.e. future calculation)
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
if start > end:
|
||||||
|
start, end = end, start
|
||||||
if not workdays:
|
if not workdays:
|
||||||
workdays = range(0, 5)
|
workdays = range(0, 5)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user