Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 HTML::Template vs. Template-Toolkit   Alexander Kostiuchenko   02 Jul 2002 15:33:24 
 Re: HTML::Template vs. Template-Toolkit   Konstantin Tokar   02 Jul 2002 18:18:58 
 HTML::Template vs. Template-Toolkit   Alexander Kostiuchenko   03 Jul 2002 04:26:43 
Архивное /ru.cgi.perl/40293d228a24.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional