1
Fork 0
mirror of https://github.com/RYGhub/royalnet.git synced 2024-11-27 13:34:28 +00:00

Tweak a bit the ship command

This commit is contained in:
Steffo 2019-03-15 14:38:16 +01:00
parent 55ba97e89a
commit 269d86e89c
3 changed files with 24 additions and 7 deletions

View file

@ -1,6 +1,5 @@
import re import re
from ..utils import Command, Call from ..utils import Command, Call, safeformat
SHIP_RESULT = "💕 {one} + {two} = <b>{result}</b>" SHIP_RESULT = "💕 {one} + {two} = <b>{result}</b>"
@ -17,17 +16,21 @@ class ShipCommand(Command):
name_two = args[2] name_two = args[2]
name_one = name_one.lower() name_one = name_one.lower()
name_two = name_two.lower() name_two = name_two.lower()
# Get all letters until the first vowel, included
match_one = re.search(r"^[A-Za-z][^aeiouAEIOU]*[aeiouAEIOU]?", name_one) match_one = re.search(r"^[A-Za-z][^aeiouAEIOU]*[aeiouAEIOU]?", name_one)
if match_one is None: if match_one is None:
part_one = name_one[:int(len(name_one) / 2)] part_one = name_one[:int(len(name_one) / 2)]
else: else:
part_one = match_one.group(0) part_one = match_one.group(0)
# Get all letters from the second to last vowel, excluded
match_two = re.search(r"[^aeiouAEIOU]*[aeiouAEIOU]?[A-Za-z]$", name_two) match_two = re.search(r"[^aeiouAEIOU]*[aeiouAEIOU]?[A-Za-z]$", name_two)
if match_two is None: if match_two is None:
part_two = name_two[int(len(name_two) / 2):] part_two = name_two[int(len(name_two) / 2):]
else: else:
part_two = match_two.group(0) part_two = match_two.group(0)
mixed = part_one + part_two # TODO: find out what exceptions this could possibly raise # Combine the two name parts
await call.reply(SHIP_RESULT.format(one=name_one.capitalize(), mixed = part_one + part_two
await call.reply(safeformat(SHIP_RESULT,
one=name_one.capitalize(),
two=name_two.capitalize(), two=name_two.capitalize(),
result=mixed.capitalize())) result=mixed.capitalize()))

View file

@ -1,5 +1,6 @@
from .asyncify import asyncify from .asyncify import asyncify
from .call import Call from .call import Call
from .command import Command from .command import Command
from .safeformat import safeformat
__all__ = ["asyncify", "Call", "Command"] __all__ = ["asyncify", "Call", "Command", "safeformat"]

View file

@ -0,0 +1,13 @@
class SafeDict(dict):
def __missing__(self, key):
return "{" + key + "}"
def safeformat(string: str, ignore_escaping: bool = False, **words: str) -> str:
if ignore_escaping:
escaped = words
else:
escaped = {}
for key in words:
escaped[key] = str(words[key]).replace("<", "&lt;").replace(">", "&gt;")
return string.format_map(SafeDict(**escaped))