inlinefuncs.py 1.77 KB
"""
Inlinefunc

Inline functions allow for direct conversion of text users mark in a
special way. Inlinefuncs are deactivated by default. To activate, add

    INLINEFUNC_ENABLED = True

to your settings file. The default inlinefuncs are found in
evennia.utils.inlinefunc.

In text, usage is straightforward:

$funcname([arg1,[arg2,...]])

Example 1 (using the "pad" inlinefunc):
    say This is $pad("a center-padded text", 50,c,-) of width 50.
    ->
    John says, "This is -------------- a center-padded text--------------- of width 50."

Example 2 (using nested "pad" and "time" inlinefuncs):
    say The time is $pad($time(), 30)right now.
    ->
    John says, "The time is         Oct 25, 11:09         right now."

To add more inline functions, add them to this module, using
the following call signature:

    def funcname(text, *args, **kwargs)

where `text` is always the part between {funcname(args) and
{/funcname and the *args are taken from the appropriate part of the
call. If no {/funcname is given, `text` will be the empty string.

It is important that the inline function properly clean the
incoming `args`, checking their type and replacing them with sane
defaults if needed. If impossible to resolve, the unmodified text
should be returned. The inlinefunc should never cause a traceback.

While the inline function should accept **kwargs, the keyword is
never accepted as a valid call - this is only intended to be used
internally by Evennia, notably to send the `session` keyword to
the function; this is the session of the object viewing the string
and can be used to customize it to each session.

"""

#def capitalize(text, *args, **kwargs):
#    "Silly capitalize example. Used as {capitalize() ... {/capitalize"
#    session = kwargs.get("session")
#    return text.capitalize()