Вызов вне нижних индексов и модулей в Шаблонном Инструментарии без Плагинов?

В дополнение к SAX и DOM там STaX, анализирующий доступное использование XMLStreamReader, который является синтаксическим анализатором получения по запросу xml.

5
задан Matthew Lock 17 August 2018 в 09:01
поделиться

2 ответа

Вы пробовали использовать в модуле в блоке [% PERL%] ?

Теперь я лично напишу плагин, который передает, скажем, MyOrg :: Plugin :: Util-> prettify_date на Util :: prettify_date после удаления первого аргумента. Вы также можете автоматизировать создание этих методов:

my @to_proxy = qw( prettify_date );

sub new {
    my $class = shift;

    {
        no strict 'refs';
        for my $sub ( @to_proxy) {
            *{"${class}::${sub}"} = sub {
                my $self = shift;
                return "My::Util::$sub"->( @_ );
            }
        }
    }
    bless {} => $class;
}
6
ответ дан 18 December 2019 в 07:30
поделиться

Вы также можете передавать функции (например, подпрограммы) в шаблон следующим образом:

use strict;
use warnings;
use List::Util ();
use Template;

my $tt = Template->new({
    INCLUDE_PATH  => '.',
});

$tt->process( 'not_plugin.tt', { 
    divider    => sub { '='  x  $_[0]         },
    capitalize => sub { ucfirst $_[0]         },
    sum        => sub { List::Util::sum( @_ ) },
});


not_plugin.tt

[% divider( 40 ) %]
Hello my name is [% capitalize( 'barry' ) %], how are u today?
The ultimate answer to life is [% sum( 10, 30, 2 ) %]
[% divider( 40 ) %]


выдаст следующее:

========================================
Hello my name is Barry, how are u today?
The ultimate answer to life is 42
========================================
15
ответ дан 18 December 2019 в 07:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: