Переменная $=pod
содержит Array
значений, каждое из которых является экземпляром (подклассом) Pod::Block
.Поэтому вам нужно воспроизвести это.
Предоставление компилятору Rakudo всей работы
Если вы компилируете некоторый код P6 с помощью компилятора P6, то любой Pod в нем должен автоматически компилироваться, ипеременная $=pod
автоматически инициализируется, чтобы содержать результаты компиляции Pod.Использование Rakudo:
=begin foo
foo-text
=end foo
say $=pod;
отображает:
[Pod::Block::Named{:name("foo")}
Pod::Block::Para
foo-text
]
Просматривая соответствующие модули компилятора ( грамматика , действия , составление оболочки ) Я подозреваю, что потребовалось бы немало усилий, чтобы понять это.Возможно, что плодом этого понимания станет возможность использовать часть этого кода как есть, но я подозреваю, что, по крайней мере, в равной степени вероятно, что вы не сможете без рефакторинга кода компилятора до некоторой степени.
Работа с
Следующее $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
Решение?
Предположительно, решение, которое вы ищете, находится где-то между этими крайностями,