Source code for TagScriptEngine.utils

import re
from inspect import isawaitable
from typing import Any, Awaitable, Callable, Union

__all__ = ("escape_content", "maybe_await")

pattern = re.compile(r"(?<!\\)([{():|}])")


def _sub_match(match: re.Match) -> str:
    return "\\" + match.group(1)


[docs]def escape_content(string: str) -> str: """ Escapes given input to avoid tampering with engine/block behavior. Returns ------- str The escaped content. """ if string is None: return return pattern.sub(_sub_match, string)
[docs]async def maybe_await(func: Union[Callable[..., Any], Awaitable[Any]], *args, **kwargs) -> Any: """ Await the given function if it is awaitable or call it synchronously. Returns ------- Any The result of the awaitable function. """ value = func(*args, **kwargs) return await value if isawaitable(value) else value