Add url configuration

cogguide_develop
bobloy 4 years ago
parent a91bf42155
commit bd10d8cfb1

@ -1,5 +1,7 @@
import logging
import pathlib
import re
import string
from typing import Optional
import discord
@ -11,6 +13,34 @@ from redbot.core.data_manager import cog_data_path
log = logging.getLogger("red.fox-v3.cogguide")
def get_parent_tree(command: commands.Command):
out = f"{command.name}"
if command.parent:
# out = f"{get_parent_tree(command.parent)}-" + out
out = f"{'-'.join(command.full_parent_name.split())}-" + out
return out
def markdown_link_replace(match, starts_with_text=None):
"""Converts a markdown match to restructuredtext match"""
text = match.group(1)
url = match.group(2)
if starts_with_text and url.startswith(starts_with_text):
url = url[len(starts_with_text):]
url = url[:url.find('.')]
return f":ref:`{text} <{url}>`"
return f"{text}: {url}"
def prepare_description(command: commands.Command):
description = command.description or command.help
description = description.replace("`", "``")
pattern = re.compile("\[(.+)]\s?\((https?:\/\/[\w\d.\/?=#]+)\)")
description = pattern.sub(markdown_link_replace, description)
return description
class CogGuide(commands.Cog):
"""
Cog to create cog guides
@ -21,16 +51,33 @@ class CogGuide(commands.Cog):
def __init__(self, bot: Red):
super().__init__()
self.bot = bot
self.config = Config.get_conf(self, identifier=0, force_registration=True)
default_guild = {}
self.config = Config.get_conf(self, identifier=6711110371117105100101, force_registration=True)
self.config.register_guild(**default_guild)
default_global = {"starts_with": None}
self.config.register_global(**default_global)
async def red_delete_data_for_user(self, **kwargs):
"""Nothing to delete"""
return
@commands.group()
async def cogguideset(self, ctx: commands.Context):
"""Base command for configuring cogguide"""
pass
@cogguideset.command(name="url")
async def cogguideset_url(self, ctx: commands.Context, url: str):
"""Sets the url of your ReadTheDocs for creating references
For example: 'https://docs.discord.red/en/stable/' for Red docs
"""
if not url:
await self.config.starts_with.clear()
else:
await self.config.starts_with.set(url)
await ctx.tick()
@commands.command()
async def allcogguides(self, ctx: commands.Context):
"""
@ -110,20 +157,15 @@ Commands
--------
"""
def get_parent_tree(command: commands.Command):
out = f"{command.name}"
if command.parent:
# out = f"{get_parent_tree(command.parent)}-" + out
out = f"{'-'.join(command.full_parent_name.split())}-" + out
return out
def get_command_rst(command: commands.Command):
description = prepare_description(command)
cog_command = f"""
.. {reference}-command-{get_parent_tree(command)}:
{'^' * len(command.name) if not command.parent else '"' * len(command.name)}
{command.name}
{'^' * len(command.name) if not command.parent else '"' * len(command.name)}
{'^' * len(command.qualified_name) if not command.parent else '"' * len(command.qualified_name)}
{command.qualified_name}
{'^' * len(command.qualified_name) if not command.parent else '"' * len(command.qualified_name)}
"""
if command.requires.privilege_level in privilege_levels:
cog_command += f"""
@ -138,7 +180,7 @@ Commands
**Description**
{command.description or command.help}
{description}
"""
return cog_command

Loading…
Cancel
Save