class RakuAST::Doc::Declarator
class RakuAST::Doc::Declarator { }
The RakuAST::Doc::Declarator class contains the leading and trailing
documentation of an object doing the
RakuAST::Doc::DeclaratorTarget
role.
Support for RakuAST functionality is available in language version
6.e+ and was added in Rakudo compiler release 2023.02. In earlier
language versions it is only available when specifying:
use experimental :rakuast;
Object introspection
RakuAST::Doc::Declarator objects are typically created when parsing
Raku Programming Language code that has objects with leading (#|)
and trailing (#=) documentation on it. So most developers will only
need to know how to introspect the objects created.
method WHEREFORE
say "attached to a $declarator.WHEREFORE.^name() object";
Returns the object for which this object contains the declarator documentation.
method leading
.say for $declarator.leading;
Returns the lines of the leading declarator documentation (one
for each line with #| if the object was created from parsing
Raku source code.
method trailing
.say for $declarator.trailing;
Returns the lines of the trailing declarator documentation (one
for each line with #= if the object was created from parsing
Raku source code.
method raku
# method .gist falls back to .raku
say $declarator; # RakuAST::Doc::Declarator.new(...
Returns the string that is needed for the creation of the block using RakuAST calls.
Object creation
One seldom creates RakuAST::Doc::Declarator objects directly. This
documentation is intended for those few people who'd like to devise
their own way of programmatically building a RakuAST::Doc::Declarator
object.
method new
method new(
Str:D :$WHEREFORE, # the associated RakuAST object
:@leading, # leading lines of documentation
:@trailing # trailing lines of documentation
)
The new method can be called to create a new RakuAST::Doc::Declarator
object. It only takes named arguments.
# there is no syntax for creating just a ::Declarator object
my $declarator = RakuAST::Doc::Declarator.new(
:WHEREFORE(RakuAST::VarDeclaration::Simple.new(...)),
:leading("line 1 leading","line 2 leading"),
:trailing("line 1 trailing","line 2 trailing")
);
Note that the leading and trailing documentation may contain any left margin whitespace.
:WHEREFORE
The RakuAST object for which this declarator contains the documentation.
:leading
A Positional with the lines of leading documentation strings.
:trailing
A Positional with the lines of trailing documentation strings.
Object modification
method set-WHEREFORE
$declarator.set-WHEREFORE($object);
Set the object for which the RakuAST::Doc::Declarator object contains
the documentation.
method set-leading
$declarator.set-leading; # reset
$declarator.set-leading("foo", "bar");
Set the leading documentation. If no arguments are specified, reset to not having any leading documentation.
method add-leading
$declarator.add-leading("additional");
Add a line to the leading documentation.
method set-trailing
$declarator.set-trailing; # reset
$declarator.set-trailing("foo", "bar");
Set the trailing documentation. If no arguments are specified, reset to not having any trailing documentation.
method add-trailing
$declarator.add-trailing("additional");
Add a line to the trailing documentation.