<div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace"><div class="gmail_default" style="font-family:monospace,monospace">Приветствую.<br><br></div><div class="gmail_default" style="font-family:monospace,monospace">  Выпустил Neaf 0.14 c экспериментальными hooks:<br><br></div><div class="gmail_default" style="font-family:monospace,monospace">  * hook ставится на путь+метод, при этом можно указать exclude (т.е. пути, к которым применяться НЕ будет)<br></div><div class="gmail_default" style="font-family:monospace,monospace">  * фазы, в которые можно воткнуться: <br>    - pre_logic - после роутинга, но до выполнения основного хэндлера (+ прерывание путём die);<br>    - pre_content - после хэндлера;<br>    - pre_reply - перед отправкой заголовков клиенту (выполнение в обратном порядке);<br>    - pre_cleanup - перед уничтожением объекта запроса, после отложенных операций (выполнение в обратном порядке);<br></div><div class="gmail_default" style="font-family:monospace,monospace">   
 - возможно, будут добавлены ещё. как минимум, pre_render, который 
отрабатывает, ТОЛЬКО если собираемся применять шаблон/сериализатор. Ну и
 pre-route надо запихнуть в ту же схему, не дело двум велосипедам быть в
 одном фреймворке, который и так велосипед.<br></div><div class="gmail_default" style="font-family:monospace,monospace">  * единственный аргумент ВСЕХ хуков - объект request<br></div><div class="gmail_default" style="font-family:monospace,monospace"> 
 * возвращаемое значение принципиально игнорируется, для коммуникаций 
между хуками есть $request->stash. Также начиная с pre_content 
доступен хэш, который вернул хэндлер, под именем $request->reply.<br></div><div class="gmail_default" style="font-family:monospace,monospace">  <br></div><div class="gmail_default" style="font-family:monospace,monospace">  Кроме этого, добавлены зависящие от пути значения по умолчанию, применяемые после успешного хэндлера, напр. MVC::<span class="gmail-il">Neaf</span>->set_path_defaults( '/api' => { -view => 'JS' } );<br></div><div class="gmail_default" style="font-family:monospace,monospace">  У них, правда, пока нет exclude.<br></div><div class="gmail_default" style="font-family:monospace,monospace">  <br></div><div class="gmail_default" style="font-family:monospace,monospace">  Кроме этого, добавлен Dancer-подобный сахар в виде <br><br></div><div class="gmail_default" style="font-family:monospace,monospace">  use MVC::<span class="gmail-il">Neaf</span> qw(:sugar);<br></div><div class="gmail_default" style="font-family:monospace,monospace">  get '/path' => sub { ... };<br></div><div class="gmail_default" style="font-family:monospace,monospace">  <span class="gmail-il">neaf</span> error => 404 => sub { ... };<br></div><div class="gmail_default" style="font-family:monospace,monospace">  <span class="gmail-il">neaf</span>->run;<br></div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">  Он тоже экспериментальный.<br><br>  <a href="https://github.com/dallaylaen/perl-mvc-neaf/" target="_blank">https://github.com/dallaylaen/<wbr>perl-mvc-<span class="gmail-il">neaf</span>/</a><br>  <a href="https://metacpan.org/pod/MVC::Neaf" target="_blank">https://metacpan.org/pod/MVC::<wbr><span class="gmail-il">Neaf</span></a><br><br></div><div class="gmail_default" style="font-family:monospace,monospace">  Акжану присуждается медаль в дисциплине "взятие на слабо", а если серьёзно, то спасибо за классный challenge и ссылки :)</div></div><div class="gmail_extra"><br><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div><div><font face="monospace,monospace">Konstantin S. Uvarin<br></font></div><font face="monospace,monospace">jabber: see <from><br></font></div><font face="monospace,monospace">skype: kuvarin<br></font></div><font face="monospace,monospace"><a href="http://github.com/dallaylaen" target="_blank">http://github.com/dallaylaen</a><br></font></div></div>
</div></div>