Достаточно сделать заглушки <br><div class="gmail_quote"><div dir="ltr">чт, 15 июня 2017 г. в 16:57, Alexander M. Pravkin <<a href="mailto:pfduch@yandex.ru">pfduch@yandex.ru</a>>:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Спасибо за наводку, но нет.<br>
<br>
Я имел в виду штатные плагины: Mojolicious::Plugin::DefaultHelpers,<br>
Mojolicious::Plugin::TagHelpers. use их бесполезен, они не экспортят<br>
свои хелперы. Писать обёртку вокруг них с экспортом каждого хелпера?<br>
Жуть какая...<br>
<br>
В "штатном" режиме это же работает как-то.<br>
<br>
<br>
On Thu, Jun 15, 2017 at 04:25:44PM +0300, Akzhan Abdulin wrote:<br>
> прочтое чтение доки подсказывает<br>
><br>
> $template_processor = Mojo::Template->new()->prepend("use YourHelpers;");<br>
><br>
> package YourHelpers'<br>
><br>
> use Exporter qw( import );<br>
><br>
> our @EXPORT = qw( my_helper );<br>
><br>
> 1;<br>
><br>
><br>
> 15 июня 2017 г., 16:17 пользователь Alexander M. Pravkin via Moscow-pm <<br>
> <a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>> написал:<br>
><br>
> > Уважаемые почитатели Mojolicious, помогите с такой проблемой.<br>
> ><br>
> > Есть некоторое число проектов, которые благополучно работают на perl<br>
> > 5.16-5.20, но на свежем валятся, ибо там повсеместно используются<br>
> > конструкции, не рекомендованные к использованию. Собственно, встала<br>
> > задача исправить это безобразие.<br>
> ><br>
> > С самим кодом проблем нет, проблемы есть с embedded-perl-шаблонами Mojo.<br>
> > Если бы их была пара штук или хотя бы пара десятков, можно было бы и<br>
> > вручную обойти. Но их около сотни только в одном проекте.<br>
> ><br>
> > В общем, понадобилась автоматическая валидация, хотя бы по синтаксису.<br>
> > На просторах, увы, не нашёл ничего, решил попробовать сам.<br>
> ><br>
> > Простые шаблоны нормально обрабатываются вот таким скриптом:<br>
> ><br>
> ><br>
> > use strict;<br>
> > use open qw(:std :utf8);<br>
> > use Mojo::Template;<br>
> ><br>
> > my $file = $ARGV[0]<br>
> >     or die "Usage: $0 mojo-template.ep\n";<br>
> ><br>
> > my $mt = Mojo::Template->new(vars => 1);<br>
> ><br>
> > my $res;<br>
> > # Проход первый: ищем необъявленные переменные<br>
> > {<br>
> >     local $SIG{__WARN__} = sub {};<br>
> >     $res = $mt->render_file($file)<br>
> >         or die "render_file $file returned nothing\n";<br>
> > }<br>
> ><br>
> > # Если ошибок не было -- всё OK<br>
> > ref $res and $res->isa('Mojo::Exception')<br>
> >     or exit 0;<br>
> ><br>
> > # Ищем все переменные, используемые шаблоном<br>
> > # Считаем, что автор кода тоже передаёт render'у все нужные<br>
> > my $errors = "$res";<br>
> > my %stash = map { $_ => undef }<br>
> >     ($errors =~ /Global symbol "\$(\w+)" requires explicit package name/g);<br>
> > delete $stash{_O}; # подставная переменная Mojo::Template<br>
> ><br>
> > print "+++ $file variables: ", join(' ', sort keys %stash), "\n";<br>
> ><br>
> > # Проход второй, настоящие ошибки<br>
> > $res = $mt->render_file($file, \%stash);<br>
> > if (ref $res and $res->isa('Mojo::Exception')) {<br>
> >     die "\n--- $file has errors:\n$res\n";<br>
> > }<br>
> ><br>
> ><br>
> > Но он, как минимум, не понимает helper'ов от всяких плагинов (layout,<br>
> > include и прочие form_for). Присобачить использование плагинов к<br>
> > одинокому Mojo::Template я ниасилил. Кто-нибудь может подсказать?<br>
> ><br>
> ><br>
> > --<br>
> > Правкин Александр<br>
> > --<br>
> > Moscow.pm mailing list<br>
> > <a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
> ><br>
<br>
--<br>
Правкин Александр<br>
</blockquote></div>