【发布时间】:2019-05-07 03:18:39
【问题描述】:
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, not quite perl 的nqp::atkey 运算符。
有很多方法可以做到这一点,所以我可以想到两个不同的可能问题。
1. 有没有办法通过 FQN(前面是 ::)访问 required 或 used 单元的 Pod?
2. 我们是否可以访问required 或used 单元的预压缩句柄,以便我们可以直接调用nqp::atkey?
【问题讨论】:
-
嗨,JJ。如果你得到一个不错的答案,也许将它添加到Access POD from another Perl 6 file 是有意义的,或者至少是一个指向它的评论。
-
@raiph 完成。然后我可以在这里回答自己,也许......
标签: raku precompiling nqp pod6