raku - 在不显式导出的情况下获取模块的 Pod

标签 raku precompiling nqp pod6

documentation in Perl 6 programs, using the Pod 6 DSL, are actually parsed as part of the code ;这使得该文档在程序内部可用,如 $=pod 多变的。

但是,我想访问该变量,以便从测试中处理它。在 this example I wrote for the Perl 6 Advent Calendar它只是作为类(在本例中为语法)变量导出:

our $pod = $=pod[0];

然后我可以这样使用它:

use Data::Dump;

use MONKEY-SEE-NO-EVAL;

sub MAIN( $module  ) {
    try require ::($module);
    say Dump( $::($module)::pod, :max-recursion(2) );

}

这在使用类名和正确路径调用时有效;但它仍然需要变量的显式导出。

我在 some code 中看到过可以使用 precomp 存储(对不起,没有好的单一来源来解释这些)用于同一件事。最终,这条线

 return nqp::atkey($handle.unit,'$=pod')[0];

诀窍是,访问由 precomp 存储表示并包含在 $handle.unit 中的模块的 Pod .问题是这实际上是较低级别,使用 nqp::atkey NQP, not quite perl 的运算符(operator).

有很多方法可以做到这一点,所以我可以想到两个不同的可能问题。
1.有没有办法通过FQN(前面是::)访问那个require的Pod d 或 use单位?
2. 我们是否可以访问 require 的预压缩句柄? d 或 use d 单位,以便我们可以调用 nqp::atkey直接地?

最佳答案

我使用这种技术(寻找更简单的方法)来创建 Module::Pod (即将出版)。看我的回答:https://stackoverflow.com/a/57247392/332359

关于raku - 在不显式导出的情况下获取模块的 Pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53634257/

相关文章:

raku - 如何存储 run 或 shell 返回的值?

for-loop - perl6/落语 : Problem with writing on the loop-variable

java - 预编译JSP : Is that server specific?

c++ - 使用 fxc.exe 创建 .fxo 着色器文件

android - Necessitas (Qt/Android NDK) qmake 路径

raku - 如何覆盖 NQPMatch.Str 函数

grammar - 命名语法规则的元对象规则是什么

arrays - 如何遍历 Raku 哈希中的数组?

abstract-syntax-tree - 从另一个程序获取 Perl 6 文件的 QAST

raku - 在 NQP (Not Quite Perl) 中编写模块会加速 perl6 程序吗?