[Moscow.pm] А можно я полошу немного ? :)

Kaltashkin Eugene zhecka на gmail.com
Ср Фев 11 07:40:21 PST 2009


Доброе время суток.
чтобы не закидали старыми тряпками сразу скажу что с такой фигней не 
работал, перерыл кучу всего, но до конца так и не врубился.

Имеем шаблон блога(для примера)
http://docs.google.com/Doc?id=ac5m4dxmjw6b_80hg9ksd
http://2.bp.blogspot.com/_AOJK6bFFsUI/Rg7AitHHIZI/AAAAAAAAAuc/T9efqVucZ6Q/s800/backstage.jpg
в нём есть теги которые определяют начало и конец блока.
Результат XML::Parser, XML::LibXML ужасен так же как и всё остальное 
типа HTML::Parser.
Хочется странного. Правда мне кажется велосипед уже изобретен.
Хочется объектного древовидного обращения к блокам данных внутри шаблона.

как ко внутренним так и к внешним.
типа есть
<blogger>
Posted by <$BlogItemAuthorNickname$> on 
<BlogDateHeader><$BlogDateHeaderDate$></BlogDateHeader> at 
<$BlogItemDateTime$>
<BlogItemComments><a 
id="<$BlogCommentNumber$>"></a><p><$BlogCommentBody$></p><p 
style="font-size:11px;">Posted by <$BlogCommentAuthor$> | <a 
href="<$BlogCommentPermalinkURL$>"><$BlogCommentDateTime$></a>  
<$BlogCommentDeleteIcon$>  <br /><br /></BlogItemComments>
</blogger>
Хочется
$blog->{BlogDateHeader} =~ 
s/\<$BlogDateHeaderDate$\>/$arrayref->{Blog}->{TodayDate}/;# замена даты 
внутри б блока входящего в <blogger>
$blog->{blogger} =~ 
s/\<$BlogItemDateHeader$\>/$arrayref->{Blog}->{Item}->{5}->{Date}/;# 
прямая замена даты в <blogger>
my $comment_template = $blog->{BlogItemComments}; # сохранение шаблона в 
переменной
$blog->{blogger} =~ s/$comment_template/sub { 
&printcomments($comment_template,5) }/; # замена блока шаблонов 
требуемым значением
или
$blog->{BlogItemComments} = &printcomments($comment_template,5); # 
замена блока шаблонов требуемым значением
print $blog->{blogger}

Это реально ? :)
Прямое указание ссылок сильно утомительно типа 
$html->{body}->{blogger}->{BlogDateHeader} и т.д.
Так как я структуры шаблона не знаю, но знаю нужные мне теги.
с xml вообще труба, получил в некоторых местах уровень вложения 30.
Пока придумал только схему на HTML::Parser где в &start и &end 
выгребаются нужные именованные блоки и запихиваются
в hash, потом в шаблон вставляется ссылка на хеш вместо самого кода.
Потом при выводе всё получается красиво и быстро.

Я тупочка ?
Может кто ткнёт носом куда копать ?








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