Обновление 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].