BrowserREPL-button-tip-on BrowserREPL-button-tip-off

EditButtonTip 2024-09-20

class RakuAST::Doc::Markup

Contains the information about RakuDoc markup

class RakuAST::Doc::Markup { }
Code

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;
Code

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␤
Code

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()";  # <␤
Code

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()";  # >␤
Code

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 $markup.atoms;  # and␤
Code

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 $markup.meta;
Code

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 $markup;  # B<and>␤
Code

Returns the string for the markup object, with any embedded markup also stringified.

method raku§

# method .gist falls back to .raku
say $markup;  # RakuAST::Doc::Markup.new(...
Code

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:D  :$letter!,      # markup identifier, e.g. "B"
  Str:D  :$opener = "<", # opener marker
  Str:D  :$closer = ">", # closer marker
         :@atoms,        # any atoms of this markup
         :@meta,         # any meta of this markup
)
Code

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>
Code
my $markup = RakuAST::Doc::Markup.new(
  :letter<B>,
  :atoms("and")
);
Code

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§

$markup.set-atoms;  # reset
$markup.set-atoms( ("and",) );
Code

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§

$markup.add-atom( ("foo",) );
Code

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§

$markup.set-meta;  # reset
$markup.set-meta( ("https://raku.org",) );
Code

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§

$markup.add-meta( ("bar",) );
Code

Add an item to the meta-information of the object. Values are expected to be either a string, or a RakuAST::Doc::Markup object.