Sorry Josh, my attention has been elsewhere.
This is what I've got outstanding from you:
[SNIP]
* IGNORE_PLUGIN_BASE/IGNORE_STD_PLUGINS patch
  http://tt2.org/pipermail/templates/2005-August/007691.html

  I don't like this I'm afraid.  On an aesthetic level, I think options
  should be positive (DO_THIS) rather than negative (DONT_DO_THIS) wherever
  possible.  So it would be better to allow the user to explicitly set
  STD_PLUGINS and/or PLUGIN_BASE to undef.  Also, Template::Provider::Allow
  and T::P::Deny provide a more general mechanism for restricting access
  to resources.

But above all else there's no tests or documentation, so that one doesn't make the grade.

Sorry for the delay in my response Andy. I've been extremely busy lately. I've got a 
better patch here (attached) and am working on docs. (Already created tests, but will 
attach later with docs.) Hopefully that will work better. I also am going to get rid of 
the STD_PLUGINS part of that previous patch as there was no real need for it. I must've 
been smoking crack at the time, as you can simply override 
Template::Plugins::STD_PLUGINS. ;) The PLUGIN_BASE deal cannot simply be set to undef, as 
we still add 'Template::Plugins' no matter what. So I'm adding a config option: 
'ADD_DEFAULT_PLUGIN_BASE'. (As can be seen in patch.) I've also included another option 
"PLUGINS_USE_LOWERCASE" which just says that all keys in STD_PLUGINS and 
PLUGINS are lowercase, and that we can use those plugins in a case insensitive manner. 
(ie: [% USE TABLE %])

[SNIP]


I offered to enter them into CVS myself back in the day, but never heard back from Andy, so I'm assuming that's a rejection stamp for CVS access. ;)

Sorry Josh, but I don't have any recollection of you asking, so it's not a rejection stamp. However if you want to be a TT maintainer then you do need to convince me that you would be as commited to the documentation and tests as to the codebase.

I don't have any problem with this at all. Whatever it takes to get fixes and 
important features in. :) We'll let my tests/docs speak for themselves once I 
have time to complete working on the docs for this patch. (Maybe a week from 
now as I'm pretty busy at the moment and it's hard to get time.)

Also, one other thing I noticed in a later email from you:

Andy Wardley wrote:
> Yes, the default behaviour should stay the same for now.  We'll make it
> right for TT3.

I've reverted the CVS version back to the original, broken behaviour.


I think the patch in CVS was fine from what I gathered. What we needed was to simply 
default the global $JOINER ($JOINT ;) ) to '&' rather than '&', which would 
create the same default behavior here. I think the patch suggested was a good one as it 
allowed changing the joiner which is probably important.

Happy New Year everyone,

-- Josh
--- ../lib/Template/Plugins.pm  2004-10-04 04:27:39.000000000 -0600
+++ Template/Plugins.pm 2005-12-27 21:42:48.000000000 -0700
@@ -150,12 +150,17 @@
     if (ref $pbase ne 'ARRAY') {
         $pbase = $pbase ? [ $pbase ] : [ ];
     }
-    push(@$pbase, 'Template::Plugin');
+
+    $self->{ ADD_DEFAULT_PLUGIN_BASE } = !exists($params->{ 
ADD_DEFAULT_PLUGIN_BASE }) || $params->{ ADD_DEFAULT_PLUGIN_BASE } || 0;
+    if ($self->{ ADD_DEFAULT_PLUGIN_BASE }){
+      push(@$pbase, 'Template::Plugin');
+    }

     $self->{ PLUGIN_BASE } = $pbase;
     $self->{ PLUGINS     } = { %$STD_PLUGINS, %$plugins };
     $self->{ TOLERANT    } = $params->{ TOLERANT }  || 0;
     $self->{ LOAD_PERL   } = $params->{ LOAD_PERL } || 0;
+    $self->{ PLUGINS_USE_LOWERCASE } = $params->{ PLUGINS_USE_LOWERCASE } || 0;
     $self->{ FACTORY     } = $factory || { };
     $self->{ DEBUG       } = ( $params->{ DEBUG } || 0 )
                              & Template::Constants::DEBUG_PLUGINS;
@@ -177,7 +182,7 @@
     my ($self, $name, $context) = @_;
     my ($factory, $module, $base, $pkg, $file, $ok, $error);

-    if ($module = $self->{ PLUGINS }->{ $name }) {
+    if ($module = $self->{ PLUGINS }->{ ($self->{ PLUGINS_USE_LOWERCASE } ? 
lc($name) : $name) } ) {
         # plugin module name is explicitly stated in PLUGIN_NAME
         $pkg = $module;
         ($file = $module) =~ s|::|/|g;
@@ -263,7 +268,7 @@
     my $format = "    %-16s => %s\n";
     my $key;

-    foreach $key (qw( TOLERANT LOAD_PERL )) {
+    foreach $key (qw( TOLERANT LOAD_PERL PLUGINS_USE_LOWERCASE 
ADD_DEFAULT_PLUGIN_BASE)) {
        $output .= sprintf($format, $key, $self->{ $key });
     }

Reply via email to