[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