在我所有的Raku软件包中,自述文件的顶部都有一行,其中包含该模块的Travis徽章,如下所示:
[](https://travis-ci.org/Kaiepi/p6-Failable)
Run Code Online (Sandbox Code Playgroud)
目前,我正在主模块中使用POD6生成自述文件,但是每次执行此操作时,我都会手动将链接复制到Travis徽章。有什么方法可以格式化POD6链接,所以我不必这样做吗?
#!/usr/bin/env raku
use v6.d;
sub MAIN (
:$foo = 42, #= A test
) {
run $*EXECUTABLE, '--doc', $*PROGRAM;
}
=begin pod
=head1 Bar
blah, blah, blah
=head2 Baz
yadda, yadda, yadda
=end pod
Run Code Online (Sandbox Code Playgroud)
输出:
class Mu $
A test
Bar
blah, blah, blah
Baz
yadda, yadda, yadda
Run Code Online (Sandbox Code Playgroud)
那在那里做什么class Mu $\nA test?
doc=HTML和也会发生这种情况doc=Markdown。 doc=Man给出这个错误:
Unknown POD element of type 'Pod::Block::Declarator': Pod::Block::Declarator.new(WHEREFORE => Mu $, config => {}, contents => [])
in method pod-node at …Run Code Online (Sandbox Code Playgroud) 实际上,使用Pod 6 DSL的Perl 6程序中的文档被解析为代码的一部分;这使得该文档可以在程序内部作为$=pod变量使用。但是,我希望能够访问该变量,以便从例如测试中对其进行处理。在此示例中,我为Perl 6 Advent Calendar编写了该代码,只是将其导出为类(在这种情况下为语法)变量:
our $pod = $=pod[0];
Run Code Online (Sandbox Code Playgroud)
然后,我可以这样使用它:
use Data::Dump;
use MONKEY-SEE-NO-EVAL;
sub MAIN( $module ) {
try require ::($module);
say Dump( $::($module)::pod, :max-recursion(2) );
}
Run Code Online (Sandbox Code Playgroud)
当使用类的名称和正确的路径调用时,此方法有效。但是它仍然需要显式导出变量。
我在一些代码中看到可以将precomp存储用于同一件事(抱歉,没有很好的单一来源来解释这些内容)。最终,这条线
return nqp::atkey($handle.unit,'$=pod')[0];
Run Code Online (Sandbox Code Playgroud)
通过访问precomp存储所代表并包含在中的模块的Pod来达到目的$handle.unit。事实是,使用NQPnqp::atkey运算符,这实际上是较低的级别,而不是perl。
有很多方法可以做到这一点,所以我可以想到两个不同的可能问题。1.是否可以通过FQN(以::开头)访问required或used单元的Pod ?2.我们是否可以访问required或used单元的precomp句柄,以便我们可以nqp::atkey直接调用?
在Perl 6的POD文档对使用访问当前文件的POD文档一节$=pod.没有关于访问另一个文件的POD文档的信息.
如何在不改变当前文件的情况下访问另一个文件的POD结构$=pod?
当我运行raku --doc test.raku以下代码时:
#! /usr/bin/env raku
use v6.d;
#| The answer
my Int $bar = 42;
#= Thank you, Douglas
say $bar.WHY.leading;
say $bar.WHY.following;
Run Code Online (Sandbox Code Playgroud)
我没有得到任何输出。当我运行代码(raku test.raku)时,输出是:
Nil
Nil
Run Code Online (Sandbox Code Playgroud)
有没有办法将声明器块与变量一起使用?