The RakuAST::Doc::Markup
class contains the information about markup codes in a RakuAST::Doc::Paragraph
or another RakuAST::Doc::Markup
object.
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::Markup
objects are typically created when parsing Raku Programming Language code that has RakuDoc
markers in it. So most developers will only need to know how to introspect the objects created.
method letter§
say "letter = $markup.letter()"; # B
Returns the letter of the markup. This is usually an uppercase letter (any Unicode codepoint with the "Lu" property), such as B
, but can also be a letter like Δ
.
method opener§
say "opener = $markup.opener()"; # <
Returns the string that indicates the opener of the markup. This is typically "<", "<<" or "«". It is mostly intended to be used for stringification of the RakuAST::Doc::Markup
object.
method closer§
say "closer = $markup.closer()"; # >
Returns the string that indicates the closer of the markup. This is typically ">", ">>" or "»". It is mostly intended to be used for stringification of the RakuAST::Doc::Markup
object.
method atoms§
.say for .atoms; # and
Returns a List
of the atoms. Note that each element can either be a string or another RakuAST::Doc::Markup
object.
method meta§
.say for .meta;
Returns a List
of the metaobjects. Note that each element can either be a string or another RakuAST::Doc::Markup
object. The RakuDoc
standard assigns meaning to the meta-information of markup for certain letters, such as a URL (in case of L
).
method Str§
put ; # B<and>
Returns the string for the markup object, with any embedded markup also stringified.
method raku§
# method .gist falls back to .rakusay ; # RakuAST::Doc::Markup.new(...
Returns the string that is needed for the creation of the markup using RakuAST
calls.
Object creation§
One seldom creates RakuAST::Doc::Markup
objects directly. This documentation is intended for those few people who'd like to devise their own way of programmatically building a RakuAST::Doc::Markup
object.
method new§
method new(Str :!, # markup identifier, e.g. "B"Str : = "<", # opener markerStr : = ">", # closer marker:, # any atoms of this markup:, # any meta of this markup)
The new
method can be called to create a new RakuAST::Doc::Markup
object. It only takes named arguments, with the :letter
argument being mandatory.
B<and>
my = RakuAST::Doc::Markup.new(:letter<B>,:atoms("and"));
Note that all arguments except :letter
are optional. So it is possible to create "empty" markup as well.
:letter§
The "type" of markup object. Generally expected to be an uppercase letter, but this is not enforced. The RakuDoc
standard assigns meaning to most ASCII uppercase letters, so one would probably do well adhering to this standard when using ASCII uppercase letters.
:opener§
The markup opening sequence marker. Defaults to "<"
. Mostly used for stringification.
:closer§
The markup closing sequence marker. Defaults to ">"
. Mostly used for stringification.
:atoms§
The actual content of the markup, specified as a Positional
. Each element can either be a string or another RakuAST::Doc::Markup
object.
:meta§
The meta-information of the markup, specified as a Positional
. Each element can either be a string or another RakuAST::Doc::Markup
object. Note that the RakuDoc
standard associates certain meaning to the meta-information for certain letters, such as the meta-information being a URL in the case of L
being the letter.
Object modification§
method set-atoms§
.set-atoms; # reset.set-atoms( ("and",) );
Set the atoms to the given Positional
. Values are expected to be either a string, or a RakuAST::Doc::Markup
object. If no values are specified, then the object will have no atoms.
method add-atom§
.add-atom( ("foo",) );
Add an atom to the atoms of the object. Values are expected to be either a string, or a RakuAST::Doc::Markup
object.
method set-meta§
.set-meta; # reset.set-meta( ("https://raku.org",) );
Set the meta-information to the given Positional
. Values are expected to be either a string, or a RakuAST::Doc::Markup
object. If no values are specified, then the object will have no meta-information.
method add-meta§
.add-meta( ("bar",) );
Add an item to the meta-information of the object. Values are expected to be either a string, or a RakuAST::Doc::Markup
object.