From cc9a934fe6566264179ee6660427f34c3183586c Mon Sep 17 00:00:00 2001 From: "Dusty.P" Date: Sat, 2 Jun 2018 23:11:21 -0800 Subject: [PATCH] Adjust gti --- exts/imports/utils.py | 6 ++++++ exts/utils.py | 48 +++++++++++++++++++++++-------------------- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/exts/imports/utils.py b/exts/imports/utils.py index c697e90..3057813 100644 --- a/exts/imports/utils.py +++ b/exts/imports/utils.py @@ -4,6 +4,7 @@ import asyncio import discord from discord.ext.commands.formatter import Paginator from . import checks +import re class Capturing(list): @@ -64,6 +65,11 @@ def to_list_of_str(items, out: list=list(), level=1, recurse=0): return out +def replace_text_ignorecase(in_str: str, old: str, new: str='') -> str: + re_replace = re.compile(re.escape(old), re.IGNORECASE) + return re_replace.sub(f'{new}', in_str) + + def paginate(text, maxlen=1990): paginator = Paginator(prefix='```py', max_size=maxlen+10) if type(text) == list: diff --git a/exts/utils.py b/exts/utils.py index db30c78..75b97a1 100644 --- a/exts/utils.py +++ b/exts/utils.py @@ -7,7 +7,7 @@ import psutil from datetime import datetime, timedelta import asyncio import async_timeout -from .imports import checks +from .imports import checks, utils import pytz import gspread from oauth2client.service_account import ServiceAccountCredentials @@ -31,6 +31,7 @@ invite_match = '(https?://)?(www.)?discord(app.com/(invite|oauth2)|.gg|.io)/[\w\ utils_log = logging.getLogger('utils') clock_emojis = ['🕛', '🕐', '🕑', '🕒', '🕓', '🕔', '🕕', '🕖', '🕗', '🕘', '🕙', '🕚'] +replace_tzs = {'MST': 'US/Mountain', 'HST': 'US/Hawaii', 'EST': 'US/Eastern'} class Utils: @@ -471,8 +472,12 @@ class Utils: try: orig_time = copy(time) for tz in pytz.all_timezones: - if tz.lower() in time.lower(): - time = time.replace(tz, '') + if any([t.replace(' ', '_') in tz.lower() + or t.replace(' ', '-') in tz.lower() + for t in time.lower().split()]): + time = utils.replace_text_ignorecase(time, old=tz, new='') + if tz in replace_tzs: + tz = replace_tzs['tz'] parsed_tz = pytz.timezone(tz) break else: @@ -487,26 +492,25 @@ class Utils: f'Examples of valid time strings are in my help documentation.\n' \ f'Please try again.' em.colour = discord.Colour.red() + try: + out_tz = pytz.timezone(timezone) + except pytz.exceptions.UnknownTimeZoneError: + for tz in pytz.all_timezones: + if timezone.lower() in tz.lower(): + out_tz = pytz.timezone(tz) + break else: - try: - out_tz = pytz.timezone(timezone) - except pytz.exceptions.UnknownTimeZoneError: - for tz in pytz.all_timezones: - if timezone.lower() in tz.lower(): - out_tz = pytz.timezone(tz) - break - else: - out_tz = None - em.title = 'Unknown Timezone.' - em.colour = discord.Colour.red() - finally: - if out_tz: - out_time = in_time.astimezone(out_tz) - em.add_field(name=f'{clock_emojis[(in_time.hour % 12)]} {in_time.strftime("%c")}', - value='input', inline=False) - em.add_field(name=f'{clock_emojis[(out_time.hour % 12)]} {out_time.strftime("%c")}', - value='output', inline=False) - em.colour = self.bot.embed_color + out_tz = None + em.title = 'Unknown Timezone.' + em.colour = discord.Colour.red() + finally: + if out_tz: + out_time = in_time.astimezone(out_tz) + em.add_field(name=f'{clock_emojis[(in_time.hour % 12)]} {in_time.strftime("%c")}', + value='input', inline=False) + em.add_field(name=f'{clock_emojis[(out_time.hour % 12)]} {out_time.strftime("%c")}', + value='output', inline=False) + em.colour = self.bot.embed_color await ctx.send(embed=em) @commands.command(name='purge', aliases=['clean', 'erase'])