aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/cogs/eval.py12
-rw-r--r--bot/utils/__init__.py4
-rw-r--r--bot/utils/helpers.py11
3 files changed, 14 insertions, 13 deletions
diff --git a/bot/cogs/eval.py b/bot/cogs/eval.py
index 52f7ffca7..23e5998d8 100644
--- a/bot/cogs/eval.py
+++ b/bot/cogs/eval.py
@@ -15,7 +15,7 @@ from bot.bot import Bot
from bot.constants import Roles
from bot.decorators import with_role
from bot.interpreter import Interpreter
-from bot.utils import send_to_paste_service
+from bot.utils import find_nth_occurrence, send_to_paste_service
log = logging.getLogger(__name__)
@@ -222,16 +222,6 @@ async def func(): # (None,) -> Any
await self._eval(ctx, code)
-def find_nth_occurrence(string: str, substring: str, n: int) -> Optional[int]:
- """Return index of `n`th occurrence of `substring` in `string`, or None if not found."""
- index = 0
- for _ in range(n):
- index = string.find(substring, index+1)
- if index == -1:
- return None
- return index
-
-
def setup(bot: Bot) -> None:
"""Load the CodeEval cog."""
bot.add_cog(CodeEval(bot))
diff --git a/bot/utils/__init__.py b/bot/utils/__init__.py
index a950f3524..3e93fcb06 100644
--- a/bot/utils/__init__.py
+++ b/bot/utils/__init__.py
@@ -1,5 +1,5 @@
-from bot.utils.helpers import CogABCMeta, pad_base64
+from bot.utils.helpers import CogABCMeta, find_nth_occurrence, pad_base64
from bot.utils.redis_cache import RedisCache
from bot.utils.services import send_to_paste_service
-__all__ = ['RedisCache', 'CogABCMeta', "pad_base64", "send_to_paste_service"]
+__all__ = ['RedisCache', 'CogABCMeta', 'find_nth_occurrence', 'pad_base64', 'send_to_paste_service']
diff --git a/bot/utils/helpers.py b/bot/utils/helpers.py
index cfbf47753..d9b60af07 100644
--- a/bot/utils/helpers.py
+++ b/bot/utils/helpers.py
@@ -1,4 +1,5 @@
from abc import ABCMeta
+from typing import Optional
from discord.ext.commands import CogMeta
@@ -7,6 +8,16 @@ class CogABCMeta(CogMeta, ABCMeta):
"""Metaclass for ABCs meant to be implemented as Cogs."""
+def find_nth_occurrence(string: str, substring: str, n: int) -> Optional[int]:
+ """Return index of `n`th occurrence of `substring` in `string`, or None if not found."""
+ index = 0
+ for _ in range(n):
+ index = string.find(substring, index+1)
+ if index == -1:
+ return None
+ return index
+
+
def pad_base64(data: str) -> str:
"""Return base64 `data` with padding characters to ensure its length is a multiple of 4."""
return data + "=" * (-len(data) % 4)