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

Андрей Фёдоров secrethost на gmail.com
Чт Дек 26 21:25:55 PST 2013


У меня этот код из

<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> написал:

> Очень редко использую 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 | http://moscow.pm.org
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20131227/c2f25ebe/attachment.html>


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