NAME
    HTML::Template::Pluggable - Extends HTML::Template with plugin support

SYNOPSIS
    Just use this module instead of HTML::Template, then use any plugins,
    and go on with life.

     use HTML::Template::Pluggable;
     use HTML::Template::Plugin::Dot;

     # Everything works the same, except for functionality that plugins add. 
     my $t = HTML::Template::Pluggable->new();

THE GOAL
    Ideally we'd like to see this functionality merged into HTML::Template,
    and turn this into a null sub-class.

STATUS
    The design of the plugin system is still in progress. Right now we have
    just one trigger in param. The name and function of this may change, and
    we would like to add triggers in new() and output() when the need
    arises.

    All we promise for now is to keep HTML::Template::Plugin::Dot
    compatible. Please get in touch if you have suggestions with feedback on
    designing the plugin system if you would like to contribute.

WRITING PLUGINS
    HTML::Template offers a plugin system which allows developers to extend
    the functionality in significant ways without creating a creating a
    sub-class, which might be impossible to use in combination with another
    sub-class extension.

    Currently, one trigger has been made available to alter how the values
    of TMPL_VARs are set. If more hooks are needed to implement your own
    plugin idea, it may be feasible to add them-- check the FAQ then ask
    about it on the list.

    Class::Trigger is used to provide plugins. Basically, you can just:

            HTML::Template->add_trigger('middle_param', \&trigger);

    A good place to add one is in your plugin's "import" subroutine:

            package HTML::Template::Plugin::MyPlugin;
            use base 'Exporter';
            sub import {
            HTML::Template->add_trigger('middle_param', \&dot_notation);
                    goto &Exporter::import;
            }

  middle_param trigger
       # in a Plugin's import() routine. 
       HTML::Template->add_trigger('middle_param',   \&_set_tmpl_var_with_dot  );

    This sets a callback that is executed in param() with all of the same
    arguments. It is only useful for altering how /setting/ params works.
    The logic to read a param is unaffected.

    It can set any TMPL_VAR values before the normal param logic kicks in.
    To do this, "$self-"{param_map}> is modified as can be seen from source
    in HTML::Template::param(). However, it must obey the following
    convention of setting $self->{param_map_done}{$param_name} for each
    param that is set. $param_name would be a key from "$self-"{param_map}>.
    This notifies the other plugins and the core param() routine to skip
    trying to set this value. $self->{param_map_done} is reset with each
    call to param(), so that like with a hash, you have the option to reset
    a param later with the same name.

SEE ALSO
    o   HTML::Template::Plugin::Dot - Add Template Toolkit's magic dot
        notation to HTML::Template.

AUTHOR
    Mark Stosberg, "<mark@summersault.com>"

BUGS
    Please report any bugs or feature requests to
    "bug-html-template-pluggable@rt.cpan.org", or through the web interface
    at <http://rt.cpan.org>. I will be notified, and then you'll
    automatically be notified of progress on your bug as I make changes.

Copyright & License
    Copyright 2005 Mark Stosberg, All Rights Reserved.

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

