Hellbot / HellBot /functions /formatter.py
Ufoptg's picture
Upload 93 files
78b07ad verified
raw
history blame
2.76 kB
import math
import re
def format_text(text: str) -> str:
emoji_pattern = re.compile(
"["
"\U0001F600-\U0001F64F" # emoticons
"\U0001F300-\U0001F5FF" # symbols & pictographs
"\U0001F680-\U0001F6FF" # transport & map symbols
"\U0001F700-\U0001F77F" # alchemical symbols
"\U0001F780-\U0001F7FF" # Geometric Shapes Extended
"\U0001F800-\U0001F8FF" # Supplemental Arrows-C
"\U0001F900-\U0001F9FF" # Supplemental Symbols and Pictographs
"\U0001FA00-\U0001FA6F" # Chess Symbols
"\U0001FA70-\U0001FAFF" # Symbols and Pictographs Extended-A
"\U00002702-\U000027B0" # Dingbats
"\U000024C2-\U0001F251" # enclosed characters
"]+",
flags=re.UNICODE,
)
return re.sub(emoji_pattern, "", text)
def superscript(text: str) -> str:
superscript_digits = str.maketrans("0123456789", "⁰¹²³⁴⁵⁶⁷⁸⁹")
return text.translate(superscript_digits)
def subscript(text: str) -> str:
subscript_digits = str.maketrans("0123456789", "₀₁₂₃₄₅₆₇₈₉")
return text.translate(subscript_digits)
def readable_time(seconds: int) -> str:
count = 0
out_time = ""
time_list = []
time_suffix_list = ["secs", "mins", "hrs", "days"]
while count < 4:
count += 1
remainder, result = divmod(seconds, 60) if count < 3 else divmod(seconds, 24)
if seconds == 0 and remainder == 0:
break
time_list.append(int(result))
seconds = int(remainder)
for x in range(len(time_list)):
time_list[x] = str(time_list[x]) + time_suffix_list[x]
if len(time_list) == 4:
out_time += time_list.pop() + ", "
time_list.reverse()
out_time += " ".join(time_list)
return out_time or "0 secs"
def humanbytes(size: int):
if not size:
return ""
power = 2**10
number = 0
dict_power_n = {0: " ", 1: "Ki", 2: "Mi", 3: "Gi", 4: "Ti"}
while size > power:
size /= power
number += 1
return str(round(size, 2)) + " " + dict_power_n[number] + "B"
def add_to_dict(data: dict, keys: list, value: str | int | bool = None) -> None:
current_level = data
for key in keys[:-1]:
current_level = current_level.setdefault(key, {})
current_level[keys[-1]] = value
def get_from_dict(data: dict, key: list):
current_level = data
for k in key:
current_level = current_level[k]
return current_level
def limit_per_page(limit: int) -> int:
return math.ceil(limit / 10)
def secs_to_mins(secs: int) -> str:
mins, secs = divmod(secs, 60)
return f"{mins}:{secs}"