gpt4 book ai didi

raku - 如何使 pod 的行为保存在 `$=pod` 等变量中?

转载 作者:行者123 更新时间:2023-12-04 11:18:19 25 4
gpt4 key购买 nike

是否可以转换保存在变量中的 pod 代码,使其行为类似于 $=pod与 pod2text 一起使用时?

#!/usr/bin/env perl6
use v6;
use Pod::To::Text;

my $code = $*PROGRAM.slurp;
my $pod = $code.subst( / ^ .+ \n <?before '=begin pod'> /, '' );

# convert $pod so it works with pod2text like $=pod does

say pod2text $pod;
say "==============";
say pod2text $=pod;

=begin pod

=head1 NAME

Test pod

=head1 DESCRIPTION

This is a test.

=end pod

最佳答案

The $=pod variable包含 Array 每个值都是 Pod::Block (的子类)的一个实例.所以你需要重现它。

让 Rakudo 编译器完成所有工作

如果你用 P6 编译器编译一些 P6 代码,那么其中的任何 Pod 都应该被自动编译,并且 $=pod变量自动初始化以包含 Pod 编译的结果。使用乐道:

=begin foo
foo-text
=end foo

say $=pod;

显示:
[Pod::Block::Named{:name("foo")}
Pod::Block::Para
foo-text
]

浏览了相关的编译器模块( grammaractionscompiling wrapper )后,我怀疑理解它需要付出相当大的努力。这种理解的成果可能是能够按原样使用其中一些代码,但我怀疑至少同样有可能你不能在某种程度上重构编译器代码。

从头开始工作

以下 $pod也将被 pod2text 接受:
my $pod =
[Pod::Block::Named.new:
:name("foo"),
:contents[Pod::Block::Para.new:
:contents["foo-text"]]];

say $pod; # displays same result as for `$=pod` above

一个办法?

大概您寻求的解决方案介于这些极端之间。

关于raku - 如何使 pod 的行为保存在 `$=pod` 等变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56107866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com