From 06cc1ab2effe08d15b682369b61127f9928548c7 Mon Sep 17 00:00:00 2001 From: Dustin Pianalto Date: Tue, 7 Apr 2020 22:10:33 -0800 Subject: [PATCH] Re-add format_output and fix git cog --- geeksbot/exts/git.py | 2 +- geeksbot/imports/utils.py | 46 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) diff --git a/geeksbot/exts/git.py b/geeksbot/exts/git.py index bd140ae..1cf20a9 100644 --- a/geeksbot/exts/git.py +++ b/geeksbot/exts/git.py @@ -9,7 +9,7 @@ from geeksbot.imports.utils import Book, Paginator, run_command git_log = logging.getLogger("git") -class Git: +class Git(commands.Cog): def __init__(self, bot): self.bot = bot diff --git a/geeksbot/imports/utils.py b/geeksbot/imports/utils.py index b1cc87b..e955aa7 100644 --- a/geeksbot/imports/utils.py +++ b/geeksbot/imports/utils.py @@ -32,6 +32,52 @@ def process_snowflake(snowflake: int) -> typing.Tuple[datetime, int, int, int]: return creation_time, worker_id, process_id, counter +# noinspection PyDefaultArgument +def to_list_of_str(items, out: list=list(), level=1, recurse=0): + # noinspection PyShadowingNames + def rec_loop(item, key, out, level): + quote = '"' + if type(item) == list: + out.append(f'{" "*level}{quote+key+quote+": " if key else ""}[') + new_level = level + 1 + out = to_list_of_str(item, out, new_level, 1) + out.append(f'{" "*level}]') + elif type(item) == dict: + out.append(f'{" "*level}{quote+key+quote+": " if key else ""}{{') + new_level = level + 1 + out = to_list_of_str(item, out, new_level, 1) + out.append(f'{" "*level}}}') + else: + out.append(f'{" "*level}{quote+key+quote+": " if key else ""}{repr(item)},') + + if type(items) == list: + if not recurse: + out = list() + out.append('[') + for item in items: + rec_loop(item, None, out, level) + if not recurse: + out.append(']') + elif type(items) == dict: + if not recurse: + out = list() + out.append('{') + for key in items: + rec_loop(items[key], key, out, level) + if not recurse: + out.append('}') + + return out + + +def format_output(text): + if type(text) == list: + text = to_list_of_str(text) + elif type(text) == dict: + text = to_list_of_str(text) + return text + + async def run_command(args): # Create subprocess process = await asyncio.create_subprocess_shell(