Как я могу использовать Template Toolkit для строки вместо файла? - PullRequest
4 голосов
/ 24 ноября 2008

У меня есть некоторые строки, которые я извлекаю из базы данных, и я хотел бы использовать Template Toolkit для них, но я не могу понять, как использовать строки в качестве ввода TT. Любые советы?

Спасибо!

-fREW

Ответы [ 3 ]

11 голосов
/ 24 ноября 2008

Документация объясняет:

процесс ($ template, \% vars, $ output,% options)

Метод process () вызывается для обработки шаблона. Первый параметр указывает шаблон ввода как одно из: имя файла относительно INCLUDE_PATH, если оно определено; ссылка на текстовую строку, содержащую текст шаблона ; ...

       # text reference
       $tt->process(\$text)
           || die $tt->error(), "\n"
4 голосов
/ 24 ноября 2008

Из документов :

# text reference
$text = "[% INCLUDE header %]\nHello world!\n[% INCLUDE footer %]";
$tt->process(\$text)
    || die $tt->error(), "\n";

(Похоже, мне следовало обновить страницу перед публикацией.)

2 голосов
/ 24 ноября 2008

Вы можете найти String :: TT как лучший альтернативный способ сделать это. Несколько тизеров из стручка ...

use String::TT qw/tt strip/;

sub foo {
   my $self = shift;
   return tt 'my name is [% self.name %]!';
}

sub bar {
   my @args = @_;
   return strip tt q{
      Args: [% args_a.join(",") %]
   }
}

и ...

my $scalar = 'scalar';
my @array  = qw/array goes here/;
my %hash   = ( hashes => 'are fun' );

tt '[% scalar %] [% scalar_s %] [% array_a %] [% hash_h %]';
...