Lasso Domain Reference¶
The Lasso domain (name ls) provides directives for each language element, as well as corresponding roles for cross-referencing. See the docs for Sphinx domains for more details on syntax.
Directives¶
The following directives act as containers for Lasso method descriptions.
Options for container directives include:
import
,imports
: Name of an imported trait. Multiple entries are combined into a comma-separated list.parent
,super
: Theparent
statement can appear in types and threads, which denotes the type that the current type is derived from.
These directives describe types of methods, and can be associated with their
container element either by being nested within the body of one of the above
directives, or by having a fully-qualified name using the container->name
syntax.
-
.. ls:method::
name(signature)
¶ -
.. ls:member::
name(signature)
¶ Describes an unbound or member method. The
member
directive is intended for methods belonging to a type, although both are processed identically.
-
.. ls:provide::
name(signature)
¶ Describes a provide method for a trait or type. Prefixed with provide in output to distinguish from methods and members.
Although a type’s provide methods and import statements need to be inside a
trait
block in Lasso code, they can appear alongside member methods in reST markup.
-
.. ls:require::
name(signature)
¶ Describes a require signature for a trait. Prefixed with require in output.
Each directive with a signature supports the following options:
param
,parameter
: Descriptions of parameters, with or without a type constraint. For an unnamed rest parameter, use...
for the name.ptype
,paramtype
,type
: Description of parameter type if more than one word is required.return
,returns
: Description of the value returned.rtype
,returntype
: Further description of the return value type.
Every directive also supports the see
or url
option for adding links to
more info, and the author
or authors
option for adding an attribution.
An index entry is created for each directive.
Signatures of methods can be specified as they appear in code, and may also
indicate which parameters are optional either using square brackets or =?
,
including the default value if desired.
Quick examples¶
.. ls:member:: string->encodeSQL92()::string
.. ls:member:: string->merge(where::integer, what::string[, offset::integer, length::integer])
.. ls:member:: string->beginsWith(find::string, -case::boolean =?)
.. ls:member:: string->endsWith(find::string, -case::boolean = false)
-
string->
encodeSQL92
() → string¶
-
string->
merge
(where::integer, what::string[, offset::integer, length::integer])¶
-
string->
beginsWith
(find::string, -case::boolean=?)¶
-
string->
endsWith
(find::string, -case::boolean=false)¶
.. ls:type:: rhino
Description of the type
:parent: string
:import: trait_horned
:import: trait_herbivore
:import: trait_foreach
:see: https://en.wikipedia.org/wiki/Rhinoceros
.. ls:member:: numberOfHorns(species::string)::integer
Description of the member method
:param string species: Specifies the species name to look up
:return: The number of horns
:rtype: integer
-
type
rhino
¶ Description of the type
Parent type: string Imports: trait_horned, trait_herbivore, trait_foreach See also: https://en.wikipedia.org/wiki/Rhinoceros
Roles¶
Cross-referencing is done with the same role syntax as other domains, except
that member tag syntax is used to associate member methods with their containing
type, trait, or thread using the arrow operator ->
, such as
:meth:`bytes->getrange`
. References are made with case-insensitive matching.
All other syntax follows what’s described in the docs for Sphinx domains.
Use the following roles to link to definitions of each element:
-
:ls:meth:
¶ Reference a type member method, trait provide method, trait require signature, or unbound method. Be sure to include the enclosing type or trait if outside its description block.
Quick example¶
The :ls:type:`Pair <pair>` type always contains two elements which are accessed
with the :ls:meth:`pair->first` and :ls:meth:`~pair->second` methods.
The Pair
type always contains two elements which are accessed
with the pair->first()
and second()
methods.
More Info¶
- Docs for Sphinx domains
- LassoGuide
- LassoSoft