aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar MarkKoz <[email protected]>2020-05-07 16:26:17 -0700
committerGravatar MarkKoz <[email protected]>2020-06-13 11:21:07 -0700
commit7468aff92bc6cd658b334d89e7049c98b8ae0439 (patch)
tree91312af4b91ef4f7d47e4465e3985b2f99a853b2
parentCode block: refactor `send_guide_embed` (diff)
Code block: rename some things to be "private"
-rw-r--r--bot/cogs/codeblock/instructions.py44
-rw-r--r--bot/cogs/codeblock/parsing.py8
2 files changed, 26 insertions, 26 deletions
diff --git a/bot/cogs/codeblock/instructions.py b/bot/cogs/codeblock/instructions.py
index d331dd2ee..abdf092fe 100644
--- a/bot/cogs/codeblock/instructions.py
+++ b/bot/cogs/codeblock/instructions.py
@@ -5,16 +5,16 @@ from . import parsing
log = logging.getLogger(__name__)
-PY_LANG_CODES = ("python", "py") # Order is important; "py" is second cause it's a subset.
-EXAMPLE_PY = "{lang}\nprint('Hello, world!')" # Make sure to escape any Markdown symbols here.
-EXAMPLE_CODE_BLOCKS = (
+_PY_LANG_CODES = ("python", "py") # Order is important; "py" is second cause it's a subset.
+_EXAMPLE_PY = "{lang}\nprint('Hello, world!')" # Make sure to escape any Markdown symbols here.
+_EXAMPLE_CODE_BLOCKS = (
"\\`\\`\\`{content}\n\\`\\`\\`\n\n"
"**This will result in the following:**\n"
"```{content}```"
)
-def get_bad_ticks_message(code_block: parsing.CodeBlock) -> Optional[str]:
+def _get_bad_ticks_message(code_block: parsing.CodeBlock) -> Optional[str]:
"""Return instructions on using the correct ticks for `code_block`."""
log.trace("Creating instructions for incorrect code block ticks.")
valid_ticks = f"\\{parsing.BACKTICK}" * 3
@@ -27,9 +27,9 @@ def get_bad_ticks_message(code_block: parsing.CodeBlock) -> Optional[str]:
)
log.trace("Check if the bad ticks code block also has issues with the language specifier.")
- addition_msg = get_bad_lang_message(code_block.content)
+ addition_msg = _get_bad_lang_message(code_block.content)
if not addition_msg:
- addition_msg = get_no_lang_message(code_block.content)
+ addition_msg = _get_no_lang_message(code_block.content)
# Combine the back ticks message with the language specifier message. The latter will
# already have an example code block.
@@ -45,9 +45,9 @@ def get_bad_ticks_message(code_block: parsing.CodeBlock) -> Optional[str]:
log.trace("No issues with the language specifier found.")
# Determine the example code to put in the code block based on the language specifier.
- if code_block.language.lower() in PY_LANG_CODES:
+ if code_block.language.lower() in _PY_LANG_CODES:
log.trace(f"Code block has a Python language specifier `{code_block.language}`.")
- content = EXAMPLE_PY.format(lang=code_block.language)
+ content = _EXAMPLE_PY.format(lang=code_block.language)
elif code_block.language:
log.trace(f"Code block has a foreign language specifier `{code_block.language}`.")
# It's not feasible to determine what would be a valid example for other languages.
@@ -56,18 +56,18 @@ def get_bad_ticks_message(code_block: parsing.CodeBlock) -> Optional[str]:
log.trace("Code block has no language specifier (and the code isn't valid Python).")
content = "Hello, world!"
- example_blocks = EXAMPLE_CODE_BLOCKS.format(content=content)
+ example_blocks = _EXAMPLE_CODE_BLOCKS.format(content=content)
instructions += f"\n\n**Here is an example of how it should look:**\n{example_blocks}"
return instructions
-def get_no_ticks_message(content: str) -> Optional[str]:
+def _get_no_ticks_message(content: str) -> Optional[str]:
"""If `content` is Python/REPL code, return instructions on using code blocks."""
log.trace("Creating instructions for a missing code block.")
if parsing.is_repl_code(content) or parsing.is_python_code(content):
- example_blocks = EXAMPLE_CODE_BLOCKS.format(content=EXAMPLE_PY.format(lang="python"))
+ example_blocks = _EXAMPLE_CODE_BLOCKS.format(content=_EXAMPLE_PY.format(lang="python"))
return (
"It looks like you're trying to paste code into this channel.\n\n"
"Discord has support for Markdown, which allows you to post code with full "
@@ -79,7 +79,7 @@ def get_no_ticks_message(content: str) -> Optional[str]:
log.trace("Aborting missing code block instructions: content is not Python code.")
-def get_bad_lang_message(content: str) -> Optional[str]:
+def _get_bad_lang_message(content: str) -> Optional[str]:
"""
Return instructions on fixing the Python language specifier for a code block.
@@ -88,10 +88,10 @@ def get_bad_lang_message(content: str) -> Optional[str]:
log.trace("Creating instructions for a poorly specified language.")
stripped = content.lstrip().lower()
- lang = next((lang for lang in PY_LANG_CODES if stripped.startswith(lang)), None)
+ lang = next((lang for lang in _PY_LANG_CODES if stripped.startswith(lang)), None)
if lang:
- # Note that get_bad_ticks_message expects the first line to have an extra newline.
+ # Note that _get_bad_ticks_message expects the first line to have an extra newline.
lines = ["It looks like you incorrectly specified a language for your code block.\n"]
if content.startswith(" "):
@@ -105,7 +105,7 @@ def get_bad_lang_message(content: str) -> Optional[str]:
f"There must not be any spaces after `{lang}`."
)
- example_blocks = EXAMPLE_CODE_BLOCKS.format(content=EXAMPLE_PY.format(lang=lang))
+ example_blocks = _EXAMPLE_CODE_BLOCKS.format(content=_EXAMPLE_PY.format(lang=lang))
lines.append(f"\n**Here is an example of how it should look:**\n{example_blocks}")
return "\n".join(lines)
@@ -113,7 +113,7 @@ def get_bad_lang_message(content: str) -> Optional[str]:
log.trace("Aborting bad language instructions: language specified isn't Python.")
-def get_no_lang_message(content: str) -> Optional[str]:
+def _get_no_lang_message(content: str) -> Optional[str]:
"""
Return instructions on specifying a language for a code block.
@@ -122,9 +122,9 @@ def get_no_lang_message(content: str) -> Optional[str]:
log.trace("Creating instructions for a missing language.")
if parsing.is_repl_code(content) or parsing.is_python_code(content):
- example_blocks = EXAMPLE_CODE_BLOCKS.format(content=EXAMPLE_PY.format(lang="python"))
+ example_blocks = _EXAMPLE_CODE_BLOCKS.format(content=_EXAMPLE_PY.format(lang="python"))
- # Note that get_bad_ticks_message expects the first line to have an extra newline.
+ # Note that _get_bad_ticks_message expects the first line to have an extra newline.
return (
"It looks like you pasted Python code without syntax highlighting.\n\n"
"Please use syntax highlighting to improve the legibility of your code and make "
@@ -146,21 +146,21 @@ def get_instructions(content: str) -> Optional[str]:
if not blocks:
log.trace(f"No code blocks were found in message.")
- return get_no_ticks_message(content)
+ return _get_no_ticks_message(content)
else:
log.trace("Searching results for a code block with invalid ticks.")
block = next((block for block in blocks if block.tick != parsing.BACKTICK), None)
if block:
log.trace(f"A code block exists but has invalid ticks.")
- return get_bad_ticks_message(block)
+ return _get_bad_ticks_message(block)
else:
log.trace(f"A code block exists but is missing a language.")
block = blocks[0]
# Check for a bad language first to avoid parsing content into an AST.
- description = get_bad_lang_message(block.content)
+ description = _get_bad_lang_message(block.content)
if not description:
- description = get_no_lang_message(block.content)
+ description = _get_no_lang_message(block.content)
return description
diff --git a/bot/cogs/codeblock/parsing.py b/bot/cogs/codeblock/parsing.py
index 055c21118..a49ecc8f7 100644
--- a/bot/cogs/codeblock/parsing.py
+++ b/bot/cogs/codeblock/parsing.py
@@ -6,7 +6,7 @@ from typing import NamedTuple, Optional, Sequence
log = logging.getLogger(__name__)
BACKTICK = "`"
-TICKS = {
+_TICKS = {
BACKTICK,
"'",
'"',
@@ -19,10 +19,10 @@ TICKS = {
"\u2033", # DOUBLE PRIME
"\u3003", # VERTICAL KANA REPEAT MARK UPPER HALF
}
-RE_CODE_BLOCK = re.compile(
+_RE_CODE_BLOCK = re.compile(
fr"""
(?P<ticks>
- (?P<tick>[{''.join(TICKS)}]) # Put all ticks into a character class within a group.
+ (?P<tick>[{''.join(_TICKS)}]) # Put all ticks into a character class within a group.
\2{{2}} # Match previous group 2 more times to ensure the same char.
)
(?P<lang>[^\W_]+\n)? # Optionally match a language specifier followed by a newline.
@@ -54,7 +54,7 @@ def find_code_blocks(message: str) -> Optional[Sequence[CodeBlock]]:
log.trace("Finding all code blocks in a message.")
code_blocks = []
- for match in RE_CODE_BLOCK.finditer(message):
+ for match in _RE_CODE_BLOCK.finditer(message):
# Used to ensure non-matched groups have an empty string as the default value.
groups = match.groupdict("")
language = groups["lang"].strip() # Strip the newline cause it's included in the group.