System

private

none $private()

Indicates that the verb has private visibility. Provided the x-flag is also set, the verb may only be called from verbs defined on the same object.

protected

none $protected()

Indicates that the verb has protected visibility. Provided the x-flag is also set, the verb may only be called from verbs defined on the same object, its ancestors or its descendants.

restrict_to_server

none $restrict_to_server()

Indicates that the verb call may only be initiated by the server. This is true for command verbs and for special verbs like server_started() and do_login_command(), among others.

restrict_to_builtin

none $restrict_to_builtin([STR builtin, ...])

Indicates that the verb may only be called by the the server in the course of executing a builtin function. This is true for special verbs like initialize() (called from create()), recycle() (called from recycle()) and accept() (called from move()), among others. If one or more optional builtins are specified, the call is further permitted for only those specified.

restrict_to_caller

none $restrict_to_caller(OBJ caller [, STR verb, ...])

Indicates that the verb may only be called by a verb defined on the specified caller. If one or more optional verbs are specified, the call is further permitted for only those specified.

permit

none $permit(STR|OBJ caller, ...)

Indicates that the verb may only be called by a verb running with the permissions specified by caller. If the caller "wizard" is specified, only allow the call if the calling permissions are wizardly. If the caller "owner" is specified, only allow the call if the calling permissions match the owner of the object on which the verb is defined. If the caller "same" is specified, only allow the call if the calling permissions match the current task permissions. Otherwise, the calling permissions must match the explicit caller specified.

$permit("wizard", "owner")
$permit($foo.bar.owner)

verb_detail

MAP $verb_detail(OBJ object, STR verb)

Returns verb info, args and other metadata in one convenient package.

$verb_detail(#100, "foobar")    => ["content_type" -> "application/x-moocode", "dobj" -> "this", "iobj" -> "this", "names" -> "foo... ]

lookup*_reference

OBJ $lookup_reference(STR reference)

Dynamically resolves the specified reference into the associated object in an installed package. The reference can refer to an object in the enclosing package, or can explicitly refer to an object in a package on which the enclosing package depends. The format of reference is "object|package". The package part of the reference is optional. If present, it refers to a package by its identifier. The object part of the reference is required and must be listed in the package manifest.

$lookup("no_such_object")    => $failed_match
$lookup("bilbo|baggins")     => #12345

grant

none $grant(permit [, OBJ owner])

Grants the specified permit. There is no restriction on what types of values can be used as permits. The owner defaults to the caller's permissions, however wizardly callers can specify the owner. Both permit and owner are used during matching. The extent of a grant is limited to the duration of the task in which the grant occurred.

$grant("a string", player)
$grant($fancy.permit:create())

revoke

none $revoke(permit [, OBJ owner])

Revokes the specified permit. A player can only revoke his/her granted permits, however a wizardly player can specify a value for owner and revoke that player's permits.

$revoke(permit)

match_permit

permit $match_permit(permit, OBJ owner [, OBJ subject])

Called by a verb to determine whether or not to perform an operation on behalf of its caller, the subject. If not specified by a wizardly player, this verb finds the subject by walking the call stack, looking for the first verb running with permissions different from the immediate caller. The owner may be the ultimate direct/indirect object of the action (but, it must be the object that granted the permit).

$match_permit("i-can-haz", player)    => "i-can-haz"