[Moscow.pm] Mojo::DOM - each & replace

Nick Knutov mail на knutov.com
Пт Дек 27 10:05:01 PST 2013


Спасибо. Оказалось, что надо спать чаще и не забывать потом возвращать
данные из функции.

27.12.2013 11:25, Андрей Фёдоров пишет:
> У меня этот код из
> 
> <div>
> <img class="image-left" alt="some">
> <img class="image-left">
> </div>
> 
> формирует
> <div>
> <figure class="image-left"><img alt="some" class="image-left"
> /><figcaption>some</figcaption></figure>
> <figure class="image-left"><img class="image-left" /></figure>
> </div>
> 
> 
> 27 декабря 2013 г., 2:54 пользователь Nick Knutov <mail на knutov.com
> <mailto:mail на knutov.com>> написал:
> 
>     Очень редко использую Mojo::DOM и не могу понять как сделать ->each так,
>     чтобы заменить найденное чем-то, сгенерированным на основе найденного.
> 
>     Пример:
> 
>     $dom->find('img.image-left')->each(sub {
>             my $img = shift;
>             my $alt = $img->attr('alt') | '';
>             my $r = '<figure class="image-left">'
>                     . $img
>                     . (length($alt)>1?
>     '<figcaption>'.$img->attr('alt').'</figcaption>' : '')
>                     . '</figure>';
>             $img->replace($r);
>             return $img->root;
>     });
> 
>     Внутри $img->root я получаю именно тот, который надо. Но снаружи ничего
>     не меняется. Где я не прав?
> 
>     Подходящие слова к гуглу на тему "mojo dom each replace" подобрать не
>     удалось. Нагуглить альтернативы Mojo::DOM - тоже. Есть pQuery и куча
>     разных ::DOM, но нигде не вижу функционала для найти и заменить на
>     производное от найденного (а во многих модулях и замены нет).
> 
>     --
>     Best Regards,
>     Nick Knutov
>     http://knutov.com
>     ICQ: 272873706
>     Voice: +7-904-84-23-130
>     --
>     Moscow.pm mailing list
>     moscow-pm на pm.org <mailto:moscow-pm на pm.org> | http://moscow.pm.org
> 
> 
> 
> 

-- 
Best Regards,
Nick Knutov
http://knutov.com
ICQ: 272873706
Voice: +7-904-84-23-130


Подробная информация о списке рассылки Moscow-pm