Обновление Perl6::Pod
Недавно я завершил процесс упрощения некоторых вещей. Я переработал реализацию Pod6 и получил от этого процесса массу удовольствия. Главной мантрой стала следующая: "проще, еще проще".
Синтаксичексий анализатор на Regexp::Grammars
Эта часть работы больше всего оказала влияния на внутреннюю архитектуру парсера pod6.
Вместо потокового принципа обработки файла, текущий парсер полностью построен на грамматиках Perl5.
Благодаря Regexp::Grammars получилось лаконично описать структуру Pod6 [1]. Это и стало основным шагом к простоте. Как следствие, большое количество кода и модулей оказались лишними.
API для встраивания Pod6
На данный момент самым простым способом использования pod6 является следующий:
use Perl6::Pod::Test;
my $html = Perl6::Pod::Test::parse_to_xhtml($pod);
Функция parse_to_xhtml
используется в большом количестве тестов,
поэтому ее работоспособность является ключевым показателем.
API для хакеров
Грамматики Perl5 можно наследовать (есть даже множественное наследование ). Поэтому изучить грамматики pod6 просто:
use Regexp::Grammars;
use Perl6::Pod::Grammars;
use Data::Dumper;
my $r = qr{
<extends: Perl6::Pod::Grammar::Blocks>
<debug:step>
\A <File> \Z
}xms;
my $tree ;
if ( $src =~ $r ) {
print Dumper( $/{File} );
}
else {
return undef;
}
Установка Perl6::Pod
Установить библиотеку в системе Ubuntu можно следующим образом:
sudo add-apt-repository ppa:zahatski/ppa
sudo apt-get install libperl6-pod-perl
Perl6::Pod также доступна на CPAN [2].
[1] Грамматика Pod6. https://github.com/zag/p5-Perl6-Pod/blob/master/lib/Perl6/Pod/Grammars.pm
[2] Реализация Pod6. http://search.cpan.org/dist/Perl6-Pod/