Attributes
Roles and places: scoping steps to people and locations
Procedures can be scoped to indicate the entity performing the task or the environment it is to be performed in. This scoping is called an attribute.
There are two types of attribute:
Roles -- a named person or job function performing the step, for example
@hitchhiker.
Places -- the location or context a step is to be performed at or within,
for example ^sleeping_quarters.
As shown in these examples, an attribute is formed by
-
an attribute marker denoted by
@for roles or^for places; and then -
an identifier.
The identifier following the marker must be a valid identifier: it must start with a lowercase letter and contain only lowercase letters, digits, and underscores.
Combining Attributes
Multiple attributes (be they role or place assignments) can be joined using
the + operator:
@president_of_the_galaxy + @femme_fatale
^milliways + @waiter + @dish_of_the_day
Scope
An attribute creates a new scope, so sub-steps and code blocks can be nested underneath a role or place assignment.
There is also the special @* syntax which resets the attribute scope,
applying to all roles.