<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <p>Советую новость оформить об нем на том же opennet.ru и на
      linux.org.ru <br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 12/19/2016 03:38 PM, Konstantin S.
      Uvarin via Moscow-pm wrote:<br>
    </div>
    <blockquote
cite="mid:CAJj2qW=19V4C1aoqWzycP8uPfcYGMDPHOJ_ztR5i0DrUe4wcMw@mail.gmail.com"
      type="cite">
      <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 moz-do-not-send="true"
              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 moz-do-not-send="true"
              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 moz-do-not-send="true"
                  href="http://github.com/dallaylaen" target="_blank">http://github.com/dallaylaen</a><br>
              </font></div>
          </div>
        </div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
 </pre>
  </body>
</html>