rewrite: replace_multiple and update Timezoned.
This commit is contained in:
@@ -738,3 +738,34 @@ class Timezoned:
|
|||||||
"""
|
"""
|
||||||
now = self.now
|
now = self.now
|
||||||
return now.replace(hour=0, minute=0, second=0, microsecond=0)
|
return now.replace(hour=0, minute=0, second=0, microsecond=0)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def week_start(self):
|
||||||
|
"""
|
||||||
|
Return the start of the week in the object's timezone
|
||||||
|
"""
|
||||||
|
today = self.today
|
||||||
|
return today - datetime.timedelta(days=today.weekday())
|
||||||
|
|
||||||
|
@property
|
||||||
|
def month_start(self):
|
||||||
|
"""
|
||||||
|
Return the start of the current month in the object's timezone
|
||||||
|
"""
|
||||||
|
today = self.today
|
||||||
|
return today - datetime.timedelta(days=today.day)
|
||||||
|
|
||||||
|
|
||||||
|
def replace_multiple(format_string, mapping):
|
||||||
|
"""
|
||||||
|
Subsistutes the keys from the format_dict with their corresponding values.
|
||||||
|
|
||||||
|
Substitution is non-chained, and done in a single pass via regex.
|
||||||
|
"""
|
||||||
|
if not mapping:
|
||||||
|
raise ValueError("Empty mapping passed.")
|
||||||
|
|
||||||
|
keys = list(mapping.keys())
|
||||||
|
pattern = '|'.join(f"({key})" for key in keys)
|
||||||
|
string = re.sub(pattern, lambda match: str(mapping[keys[match.lastindex - 1]]), format_string)
|
||||||
|
return string
|
||||||
|
|||||||
Reference in New Issue
Block a user