package Template::Plugin::HTML::Template;

use strict;
use vars qw($VERSION $DYNAMIC $FILTER_NAME);
$VERSION = 0.02;

$DYNAMIC = 1;
$FILTER_NAME = 'html_template';

use HTML::Template;
use base qw(Template::Plugin::Filter);

sub init {
    my($self, $options) = @_;
    my $name = $self->{_ARGS}->[0] || $FILTER_NAME;
    $self->install_filter($name);
    $self->{_options} = $options;
    return $self;
}

sub filter {
    my($self, $text, $args, $options) = @_;
    my $template = HTML::Template->new(
	strict => 0,
	die_on_bad_params => 0,
	%{$self->{_options}},
	%$options,
	scalarref => \$text,
    );

    my $stash = $self->{_CONTEXT}->stash;
    my @params = map { ($_ => $stash->{ $_ }) } grep !/^[\._]/, keys %$stash;
    $template->param(@params);
    return $template->output;
}

1;
__END__

=head1 NAME

Template::Plugin::HTML::Template - HTML::Template filter in TT

=head1 SYNOPSIS

  my $tt = Template->new;
  $tt->process('html-template.tt', { myname => 'foo' });

  # html-template.tt
  [% USE HTML.Template %]
  [% FILTER html_template %]
  My name is <TMPL_VAR name=myname>
  [% END %]

  # HTML::Template parameters
  [% USE ht = HTML.Template(loop_context_vars = 1) %]
  [% FILTER $ht %]
  <TMPL_LOOP employee>
     <TMPL_IF __FIRST__>...</TMPL_IF>
  </TMPL_LOOP>
  [% END %]

=head1 DESCRIPTION

Template::Plugin::HTML::Template is a TT plugin to filter
HTML::Template templates. It might sound just silly, but it can be
handy when you want to reuse existent HTML::Template templates inside
TT.

=head1 AUTHOR

Tatsuhiko Miyagawa E<lt>miyagawa@bulknews.netE<gt>

darren chamberlain <darren@cpan.org>

This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.

=head1 SEE ALSO

L<Template>, L<HTML::Template>

=cut