|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Alexander Kostiuchenko 2:463/672.419 03 Jul 2002 04:26:43 To : Konstantin Tokar Subject : HTML::Template vs. Template-Toolkit -------------------------------------------------------------------------------- Как-то раз (а точнее 02 Jul 02 в 18:18) Konstantin Tokar писал(а) к Alexander Kostiuchenko: >> Вопрос: существует ли возможность применить такой паттерн при работе >> с TT ? KT> возможно, он более чем полностью включает возможности html::template единственное, что пока пришло в голову - сесть на Template::Stash::get и заполнять переменные по мере их вызова. Тут же наткнулся на баг - нормально унаследовать Template::Stash не получилось, т.к. при (STASH => new My::Template::Stash) при попытке присвоить значение вылетает Can't locate object method "component" via package "My::Template::Stash" at Template/Stash.pm line 578. Возможно, дело в старой (2.13) версии... Hа коленке накидал: *Template::Stash::orig_get = \&Template::Stash::get; *Template::Stash::get = sub { my ($self,$var) = @_; if ($var !~ /^ARRAY/) { $self->set( $var => *{"Filler::$var"}->() ) unless $self->orig_get($var); } elsif ($var->[0] eq 'import') { # FOREACH is used without specifying a target variable # any iterated values which are hash references automatically imported. my %vars = %{$var->[1]->[0]}; $self->set( $_ => $vars{$_} ) for keys %vars; } } package Filler; sub AUTOLOAD { my $var = ((split('::',$Filler::AUTOLOAD))[-1]); die "Dont know how to set $var"; } # здесь - методы для задания соотв. переменных # имя метода = имя переменной sub var { return 'value' or $hashref } Все это даже работает, правда пока не проверял на сложных структурах (нормально ли отработает import), вложенных темплейтах (как там с видимостью переменных) и т.д. Может есть другие идеи по реализации или расширении этого ? -- mailto: random at random.com.ua //Александр * Origin: useless (2:463/672.419) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/40293d228a24.html, оценка из 5, голосов 10
|