Provided by: libstring-tt-perl_0.3-1_all bug

NAME

       String::TT - use TT to interpolate lexical variables

SYNOPSIS

         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(",") %]
            }
         }

DESCRIPTION

       String::TT exports a "tt" function, which takes a TT (Template Toolkit) template as its argument.  It
       uses the current lexical scope to resolve variable references.  So if you say:

         my $foo = 42;
         my $bar = 24;

         tt '[% foo %] <-> [% bar %]';

       the result will be "42 <-> 24".

       TT provides a slightly less rich namespace for variables than perl, so we have to do some mapping.
       Arrays are always translated from @array to "array_a" and hashes are always translated from %hash to
       "hash_h".  Scalars are special and retain their original name, but they also get a "scalar_s" alias.
       Here's an example:

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

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

       There is one special case, and that's when you have a scalar that is named like an existing array or
       hash's alias:

         my $foo_a = 'foo_a';
         my @foo   = qw/foo array/;

         tt '[% foo_a %] [% foo_a_s %]'; # foo_a is the array, foo_a_s is the scalar

       In this case, the "foo_a" accessor for the "foo_a" scalar will not be generated.  You will have to access
       it via "foo_a_s".  If you delete the array, though, then "foo_a" will refer to the scalar.

       This is a very cornery case that you should never encounter unless you are weird.  99% of the time you
       will just use the variable name.

EXPORT

       None by default, but "strip" and "tt" are available.

FUNCTIONS

   tt $template
       Treats $template as a Template Toolkit template, populated with variables from the current lexical scope.

   strip $text
       Removes a leading empty line and common leading spaces on each line.  For example,

         strip q{
           This is a test.
            This is indented.
         };

       Will yield the string "This is a test\n This is indented.\n".

       This feature is designed to be used like:

         my $data = strip tt q{
             This is a [% template %].
             It is easy to read.
         };

       Instead of the ugly heredoc equivalent:

         my $data = tt <<'EOTT';
       This is a [% template %].
       It looks like crap.
       EOTT

HACKING

       If you want to pass args to the TT engine, override the "_build_tt_engine" function:

         local *String::TT::_build_tt_engine = sub { return Template->new( ... ) }
         tt 'this uses my engine';

VERSION CONTROL

       This module is hosted in the "jrock.us" git repository.  You can view the history in your web browser at:

       <http://git.jrock.us/?p=String-TT.git;a=summary>

       and you can clone the repository by running:

         git clone git://git.jrock.us/String-TT

       Patches welcome.

AUTHOR

       Jonathan Rockway "jrockway@cpan.org"

COPYRIGHT

       This module is copyright (c) 2008 Infinity Interactive.  You may redistribute it under the same terms as
       Perl itself.