The diff (against 4.07_02) below extracts the hard-coded HTML::Template classname from load_tmpl.

This should make it easier to drop in a replacement module, and it will certainly simplify maintenance of both CGI::Application::Plugin::HTDot and your CGI::Application::Plugin::HTCompiled, since you no longer have to copy/paste the entire load_tmpl().

Happy hacking,

Rhesa



--- lib/CGI/Application.pm      2007-11-01 00:32:10.000000000 +0100
+++ refactor/CGI/Application.pm 2008-05-07 15:07:31.000000000 +0200
@@ -1412,7 +1412,11 @@ and features pre-and-post features, sing
 L<CGI::Application::Plugin::Stream> can help if you want to return a stream and
 not a file. It features a simple syntax and MIME-type detection.

+B<specifying the template class with html_tmpl_class()>

+If you have a template system that is API compatible to HTML::Template, it
+may be enough to override C<html_tmpl_class()>. This method should return
+the class name of your template system. The default simply returns
+"HTML::Template".



@@ -1441,6 +1445,8 @@ Here's an example stub for a load_tmpl()

 =cut

+sub html_tmpl_class { 'HTML::Template' }
+
 sub load_tmpl {
        my $self = shift;
        my ($tmpl_file, @extra_params) = @_;
@@ -1474,17 +1480,18 @@ sub load_tmpl {

     $self->call_hook('load_tmpl', \%ht_params, \%tmpl_params, $tmpl_file);

-    require HTML::Template;
+    my $ht_class = $self->html_tmpl_class;
+    eval "require $ht_class;";
     # let's check $tmpl_file and see what kind of parameter it is - we
     # now support 3 options: scalar (filename), ref to scalar (the
     # actual html/template content) and reference to FILEHANDLE
     my $t = undef;
     if ( ref $tmpl_file eq 'SCALAR' ) {
-        $t = HTML::Template->new_scalar_ref( $tmpl_file, %ht_params );
+        $t = $ht_class->new_scalar_ref( $tmpl_file, %ht_params );
     } elsif ( ref $tmpl_file eq 'GLOB' ) {
-        $t = HTML::Template->new_filehandle( $tmpl_file, %ht_params );
+        $t = $ht_class->new_filehandle( $tmpl_file, %ht_params );
     } else {
-        $t = HTML::Template->new_file($tmpl_file, %ht_params);
+        $t = $ht_class->new_file($tmpl_file, %ht_params);
     }

     if (keys %tmpl_params) {



#####  CGI::Application community mailing list  ################
##                                                            ##
##  To unsubscribe, or change your message delivery options,  ##
##  visit:  http://www.erlbaum.net/mailman/listinfo/cgiapp    ##
##                                                            ##
##  Web archive:   http://www.erlbaum.net/pipermail/cgiapp/   ##
##  Wiki:          http://cgiapp.erlbaum.net/                 ##
##                                                            ##
################################################################

Reply via email to