Доступ к POD из другого файла Perl 6
В документации Perl 6 POD есть раздел о доступе к документу POD текущего файла с помощью $=pod
, Нет информации о доступе к документу POD другого файла.
Как я могу получить доступ к структуре POD другого файла, не изменяя текущий файл $=pod
?
1 ответ
Теперь вы можете сделать это с помощью Pod:: Load. Из README
в каталоге примеров
perl6 -e 'use Pod::Load; .perl.say for load("pod-load-clean.pod6")'
Обратите внимание, что файл Pod6 должен быть "чистым", то есть не использовать какой-либо внешний модуль, который обычно недоступен, иначе он может выйти из строя.
Я создал независимое от файловой системы решение в Module::Pod (скоро будет опубликовано) по адресу git@github.com:dmaestro/Module-Pod.git
use Module::Pod;
# Get all Pod::Block::* objects in the module, from its own $=pod
my @pod = pod-from-module(<My::Module>);
Плюсы:
- Нет прямых оценок кода файла (даже в Module::Pod)
- Использует CompUnit::Repository и родственников для поиска модуля.
- Может использоваться с или без
use
-Изменение модуля для других целей в вашем коде - Если модуль уже загружен, вы можете вызвать его Type Object
Минусы:
- Модуль использует nqp: методы напрямую, как в Pod::Convenience (может, это не совсем минус?)
- Невозможно получить пакет из файлов *.pod
Предназначен для использования в тестах проверки Pod6 и т. Д.
Возможно, кто-то знает чистый способ сделать это, и в этом случае я, вероятно, просто удалю этот слабый хакерский непроверенный тип комментариев-комментариев-ответов, если кто-то не подтвердит, что это работает, и приблизительный консенсус стоит оставить здесь.
Я подозреваю, что вам нужно обойти куст шелковицы.
Что-то вроде следующего. (Не испытано.)
unit class Pod::To::DotPerl;
method render ($pod) { print $pod.perl }
сохранено в lib/Pod/To/DotPerl.pm6
и установлен с zef
тогда (не проверено):
use MONKEY-SEE-NO-EVAL;
my $pod;
try (run <perl6 --doc=DotPerl.pm6 $file>, :err, :out)
andthen $pod = EVAL .out.slurp(:close)
orelse die .err.slurp(:close)
Смотрите в конце моего предыдущего ответа для описания того, что происходит.