class RakuAST::Doc::Markup { }

RakuAST::Doc::Markup 类包含有关 RakuAST::Doc::Paragraph 或其他 RakuAST::Doc::Markup 对象中标记代码的信息。

RakuAST 功能的支持在语言版本 6.e+ 中可用,并在 Rakudo 编译器版本 2023.02 中添加。在较早的语言版本中,仅在指定时可用

use experimental :rakuast;

对象内省§

当解析包含 RakuDoc 标记的 Raku 编程语言代码时,通常会创建 RakuAST::Doc::Markup 对象。因此,大多数开发人员只需要知道如何内省创建的对象。

方法 letter§

say "letter = $markup.letter()";  # B␤ 

返回标记的字母。这通常是大写字母(任何具有“Lu”属性的 Unicode 代码点),例如 B,但也可以是 Δ 等字母。

方法 opener§

say "opener = $markup.opener()";  # <␤ 

返回指示标记开头的字符串。这通常是“<”、“<<”或“«”。它主要用于 RakuAST::Doc::Markup 对象的字符串化。

方法 closer§

say "closer = $markup.closer()";  # >␤ 

返回指示标记开头的字符串。这通常是“>”、“>>”或“»”。它主要用于 RakuAST::Doc::Markup 对象的字符串化。

方法 atoms§

.say for $markup.atoms;  # and␤ 

返回一个 List 的原子。请注意,每个元素可以是字符串或另一个 RakuAST::Doc::Markup 对象。

方法 meta§

.say for $markup.meta;

返回一个 List 的元对象。请注意,每个元素可以是字符串或另一个 RakuAST::Doc::Markup 对象。RakuDoc 标准为某些字母的标记元信息分配了含义,例如 URL(在 L 的情况下)。

方法 Str§

put $markup;  # B<and>␤ 

返回标记对象的字符串,以及任何嵌入式标记也已字符串化。

方法 raku§

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

返回使用 RakuAST 调用创建标记所需的字符串。

对象创建§

人们很少直接创建 RakuAST::Doc::Markup 对象。此文档适用于希望设计自己的方式以编程方式构建 RakuAST::Doc::Markup 对象的少数人。

方法 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 
)

可以调用 new 方法来创建一个新的 RakuAST::Doc::Markup 对象。它只接受命名参数,其中 :letter 参数是必需的。

B<and>
my $markup = RakuAST::Doc::Markup.new(
  :letter<B>,
  :atoms("and")
);

请注意,除了 :letter 之外,所有参数都是可选的。因此,也可以创建“空”标记。

:letter§

标记对象的“类型”。通常期望是大写字母,但这不是强制的。RakuDoc 标准为大多数 ASCII 大写字母指定了含义,因此在使用 ASCII 大写字母时,最好遵守此标准。

:opener§

标记打开序列标记。默认为 "<"。主要用于字符串化。

:closer§

标记关闭序列标记。默认为 ">"。主要用于字符串化。

:atoms§

标记的实际内容,指定为 Positional。每个元素可以是字符串或另一个 RakuAST::Doc::Markup 对象。

:meta§

标记的元信息,指定为 Positional。每个元素可以是字符串或另一个 RakuAST::Doc::Markup 对象。请注意,RakuDoc 标准将某些字母的元信息与特定含义相关联,例如在字母为 L 的情况下,元信息为 URL。

对象修改§

方法 set-atoms§

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

将原子设置为给定的 Positional。期望值是字符串或 RakuAST::Doc::Markup 对象。如果未指定任何值,则对象将没有原子。

方法 add-atom§

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

向对象的原子添加一个原子。期望值是字符串或 RakuAST::Doc::Markup 对象。

方法 set-meta§

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

将元信息设置为给定的 Positional。期望值是字符串或 RakuAST::Doc::Markup 对象。如果未指定任何值,则对象将没有元信息。

方法 add-meta§

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

向对象的元信息中添加一个项目。值应为字符串或 RakuAST::Doc::Markup 对象。