[Templates-cvs] cvs commit: Template2/todo_misc README Template-Provider.pm.diff cache_plugin jonas_docs jonas_segf tttp xmlview

cvs@template-toolkit.org cvs@template-toolkit.org


cvs         07/02/09 16:36:15

  Added:       todo_misc README Template-Provider.pm.diff cache_plugin
                        jonas_docs jonas_segf tttp xmlview
  Log:
  moved todo files to new location
  
  Revision  Changes    Path
  1.1                  Template2/todo_misc/README
  
  Index: README
  ===================================================================
  This contains various bits and pieces that probably shouldn't be forgotten about.
  This was the 'todo' directory, but it clashed with the 'TODO' file on OSX so I 
  had to rename it.
  
  A
  
  
  
  1.1                  Template2/todo_misc/Template-Provider.pm.diff
  
  Index: Template-Provider.pm.diff
  ===================================================================
  --- /usr/lib/perl5/site_perl/5.8.4/i686-linux-thread-multi/Template/Provider.pm	2004-01-30 18:37:50.000000000 +0000
  +++ Template/Provider.pm	2005-12-18 00:50:02.264515495 +0000
  @@ -418,7 +418,7 @@
       if (defined $size && ! $size) {
           # caching disabled so load and compile but don't cache
           if ($compiled && -f $compiled 
  -            && (stat($name))[9] <= (stat($compiled))[9]) {
  +            && $self->_mtime($name) <= (stat($compiled))[9]) {
               $data = $self->_load_compiled($compiled);
               $error = $self->error() unless $data;
           }
  @@ -752,8 +752,8 @@
       my ($slot, $head);
   
       # extract the load time and compiled template from the data
  -#    my $load = $data->{ load };
  -    my $load = (stat($name))[9];
  +    my $load = $self->_mtime($name);
  +#    my $load = (stat($name))[9];
       $data = $data->{ data };
   
       $self->debug("_store($name, $data)") if $self->{ DEBUG };
  @@ -800,6 +800,12 @@
       return $data;
   }
   
  +sub _mtime
  +{
  +    my ($self, $name) = @_;
  +    my $load = (stat($name))[9];
  +    return $load;
  +}
   
   #------------------------------------------------------------------------
   # _compile($data)
  
  
  
  1.1                  Template2/todo_misc/cache_plugin
  
  Index: cache_plugin
  ===================================================================
  From: Perrin Harkins <perrin@elem.com>
  X-Mailer: Mozilla 4.7 [en] (X11; I; Linux 2.2.16-22 i686)
  X-Accept-Language: en
  MIME-Version: 1.0
  To: templates@template-toolkit.org
  Content-Type: multipart/mixed;
   boundary="------------A76E8171DCE73B663B9DA377"
  Subject: [Templates] RFC: Template::Plugin::Cache
  Sender: templates-admin@template-toolkit.org
  Errors-To: templates-admin@template-toolkit.org
  X-BeenThere: templates@template-toolkit.org
  X-Mailman-Version: 2.0rc1
  Precedence: bulk
  List-Help: <mailto:templates-request@template-toolkit.org?subject=help>
  List-Post: <mailto:templates@template-toolkit.org>
  List-Subscribe: <http://www.template-toolkit.org/mailman/listinfo/templates>,
  	<mailto:templates-request@template-toolkit.org?subject=subscribe>
  List-Id: Template Toolkit mailing list <templates.template-toolkit.org>
  List-Unsubscribe: <http://www.template-toolkit.org/mailman/listinfo/templates>,
  	<mailto:templates-request@template-toolkit.org?subject=unsubscribe>
  List-Archive: <http://www.template-toolkit.org/pipermail/templates/>
  Date: Wed, 01 Aug 2001 01:56:12 -0700
  X-UIDL: 4b52ce5bbd5e4261cad4eafdc1bb408b
  Status: RO
  Content-Length: 5732
  Lines: 224
  
  This is a multi-part message in MIME format.
  --------------A76E8171DCE73B663B9DA377
  Content-Type: text/plain; charset=us-ascii
  Content-Transfer-Encoding: 7bit
  
  Here's my first draft.  I'm including the module and a test script.  Go
  wild.  If this turns into something legit, I'll put it on CPAN.
  - Perrin
  --------------A76E8171DCE73B663B9DA377
  Content-Type: application/x-perl;
   name="test_plugin.pl"
  Content-Transfer-Encoding: 7bit
  Content-Disposition: inline;
   filename="test_plugin.pl"
  
  #!/usr/bin/perl -w
  
  use strict;
  use Template;
  $| = 1;
  
  my $template = <<EOM;
  [% USE cache = Cache %]
  [% BLOCK cache_me %]
  -----------------------
    About to do a lot of work...
    [% PERL %]
      sleep 5;
    [% END %]
    And now to demonstrate that the keys matter:
                   Hello [% name %]
  -----------------------
  [% END %]
  [% cache.inc(
               'template' => 'cache_me',
               'keys' => {'name' => name},
               'ttl' => 15
               ) %]
  EOM
  
  my $t = Template->new(
  		      EVAL_PERL => 1,
  		      ANYCASE   => 1,
  		     );
  
  print "first run with name = Suzanne";
  $t->process(\$template, { name => 'Suzanne' }) || die $t->error();
  
  print "second run with name = Suzanne\n\n";
  $t->process(\$template, { name => 'Suzanne' }) || die $t->error();
  
  print "first run with name = World\n\n";
  $t->process(\$template, { name => 'World' }) || die $t->error();
  
  print "second run with name = World\n\n";
  $t->process(\$template, { name => 'World' }) || die $t->error();
  
  --------------A76E8171DCE73B663B9DA377
  Content-Type: text/plain; charset=us-ascii;
   name="Cache.pm"
  Content-Transfer-Encoding: 7bit
  Content-Disposition: inline;
   filename="Cache.pm"
  
  #============================================================= -*-Perl-*-
  #
  # Template::Plugin::Cache
  #
  # DESCRIPTION
  #
  #   Plugin to cache template output
  #
  # AUTHORS
  #   Perrin Harkins           <perrin@elem.com>
  #   (your name here)
  #
  # COPYRIGHT
  #   Copyright (C) 2000 Perrin Harkins.
  #
  #   This module is free software; you can redistribute it and/or
  #   modify it under the same terms as Perl itself.
  #
  #----------------------------------------------------------------------------
  #
  # $Id: cache_plugin,v 1.1 2007/02/09 16:36:15 abw Exp $
  #
  #============================================================================
  
  package Template::Plugin::Cache;
  
  use strict;
  use vars qw( $VERSION );
  use base qw( Template::Plugin );
  use Template::Plugin;
  
  use File::Cache;
  
  $VERSION = 0.1;
  
  #------------------------------------------------------------------------
  # new(\%options)
  #------------------------------------------------------------------------
  
  sub new {
      my ($class, $context, $params) = @_;
      my $cache = File::Cache->new($params);
      my $self = bless {
  		      CACHE   => $cache,
  		      CONFIG  => $params,
  		      CONTEXT => $context,
  		     }, $class;
      return $self;
  }
  
  #------------------------------------------------------------------------
  # $cache->inc({
  #              template => 'foo.html',
  #              keys     => {'user.name', user.name},
  #              ttl      => 60, #seconds
  #             });
  #------------------------------------------------------------------------
  
  sub inc {
      my ($self, $params) = @_;
      my $cache_keys = $params->{keys};
      #warn %$cache_keys;
      my $key = join(
  		   ':',
  		   (
  		    $params->{template},
  		    map { "$_=$cache_keys->{$_}" } keys %{$cache_keys}
  		   )
  		  );
      my $result = $self->{CACHE}->get($key);
      if (!$result) {
        #warn "processing template";
        $result = $self->{CONTEXT}->include($params->{template});
        $self->{CACHE}->set($key, $result, $params->{ttl});
      }
      return $result;
  }
  
  1;
  
  __END__
  
  =head1 NAME
  
  Template::Plugin::Cache - cache output of templates
  
  =head1 SYNOPSIS
  
    [% USE cache = Cache%]
      
  
    [% cache.inc(
  	       'template' => 'slow.html',
  	       'keys' => {'user.name' => user.name},
  	       'ttl' => 360
  	       ) %]
  
  =head1 DESCRIPTION
  
  The Cache plugin allows you to cache generated output from a template.
  You load the plugin with the standard syntax:
  
      [% USE cache = Cache %]
  
  This creates a plugin object with the name 'cache'.  You may also
  specify parameters for the File::Cache module, which is used for
  storage.
  
      [% USE mycache = Cache(namespace => 'MyCache') %]
  
  The only method currently available is an include, "cache.inc", which
  can work on blocks or files the same as the standard INCLUDE
  directive.
  
    [% cache.inc(
  	       'template' => 'slow.html',
  	       'keys' => {'user.name' => user.name},
  	       'ttl' => 360
  	       ) %]
  
  The template parameter names the file or block to include.  The keys
  are variables used to identify the correct cache file.  Different
  values for the specified keys will result in different cache files.
  The ttl parameter specifies the "time to live" for this cache file, in
  seconds.
  
  Why the ugliness on the keys?  Well, the TT dot notation can only be
  resolved correctly by the TT parser at compile time.  It's easy to
  look up simple variable names in the stash, but compound names like
  "user.name" are hard to resolve at runtime.  I may attempt to fake
  this in a future version, but it would be hacky and might cause
  problems.
  
  =head1 AUTHORS
  
  Perrin Harkins (perrin@elem.com) wrote the first version of this
  plugin, with help and suggestions from various parties.
  
  =head1 COPYRIGHT
  
  Copyright (C) 2001 Perrin Harkins.
  
  This module is free software; you can redistribute it and/or
  modify it under the same terms as Perl itself.
  
  =head1 SEE ALSO
  
  L<Template::Plugin|Template::Plugin>, L<File::Cache|File::Cache>
  
  =cut
  
  
  --------------A76E8171DCE73B663B9DA377--
  
  
  _______________________________________________
  templates mailing list
  templates@template-toolkit.org
  http://www.template-toolkit.org/mailman/listinfo/templates
  
  
  
  
  
  
  1.1                  Template2/todo_misc/jonas_docs
  
  Index: jonas_docs
  ===================================================================
  From jonas@jonas.rit.se  Sat May 19 15:44:34 2001
  Received: from horatio.cre.canon.co.uk (horatio.cre.canon.co.uk [194.131.191.5])
  	by cre.canon.co.uk (8.9.3/8.9.3) with ESMTP id PAA15657
  	for <abw@cre.canon.co.uk>; Sat, 19 May 2001 15:44:34 +0100 (BST)
  Received: (from uucp@localhost)
  	by horatio.cre.canon.co.uk (8.9.3/8.9.1) id PAA08014
  	for <abw@cre.canon.co.uk>; Sat, 19 May 2001 15:42:49 +0100 (BST)
  Received: from jonas.rit.se( 213.88.136.203) by horatio via smap (V2.0)
  	id xma008011; Sat, 19 May 01 15:42:37 +0100
  Received: from jonas by jonas.rit.se with local (Exim 3.22 #1 (Debian))
  	id 15181V-0005Bu-00; Sat, 19 May 2001 16:48:05 +0200
  To: Andy Wardley <abw@cre.canon.co.uk>
  Cc: templates@template-toolkit.org
  Subject: Re: [Templates] TPC5 Tutorial
  References: <20010517090155.F9769@bandanna.cre.canon.co.uk>
  From: Jonas Liljegren <jonas@liljegren.org>
  Date: 19 May 2001 16:48:05 +0200
  Message-ID: <87ae49z97e.fsf@jonas.rit.se>
  User-Agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7
  MIME-Version: 1.0
  Content-Type: text/plain; charset=us-ascii
  Sender: Jonas Liljegren <jonas@jonas.rit.se>
  Status: RO
  X-Status: A
  Content-Length: 3674
  Lines: 118
  
  Andy Wardley <abw@cre.canon.co.uk> writes:
  
  > I've been putting together some content for a TT tutorial for the
  > Perl Conference later this year.  Eventually, I plan to work this 
  > all into a new Template::Tutorial document(s).
  
  http://www.tt2.org/tpc5/tt2/intro/tdirs.html =~ s/outut/output/
  
  
  The intro/vdirs.html and intro/tdirs.html is a little confusing.  All
  those diffrent words with no explanation to why they are necessary.
  And it may not be celar what it means process a template with
  localised varables.
  
  I think one could get the impression that a lot of those directives
  could be skiped, since many of them do similar things.  Examples of
  their use would be good.
  
  
  ***
  
  interface/ttreecfg.html : All these absolute paths feels wrong.  Why
  not just define the relationship between the config file and the base,
  and then define the other files in relation to the base dir?
  Ok.  That's not a comment on the tutorial.  But the first thing I
  would do would be to try relative URIs.  You should at least comment
  on that.
  
  It would be nice to do:
  
    etc/ttree.cfg 
  
          # ttree directory/file options
          base = ..
          src  = src
          dest = html
          lib  = lib
          lib  = /home/abw/tt2/templates
             .
             .
             .
          define  dir = .
          define  url = /~abw/tpc5
          pre_process = config
  
  
  And you could go with almost no required configuration.
  I also think that it should be easier for the generated html pages to
  use relative paths.  You shouldn't have to know the base URL. (And
  that would result in no need to touch the config file at all.)  This
  is important since it makes it easier to develop the site in one place
  and deploy it in another place.
  
  ***
  
  interface/process.html
  
  I understand the notes. But I think the '$' explanation came out
  confusing.  Try to explan that there is no template called 'template',
  but htere is a *magic variable* called template.  And the use of '$'
  to use variables inside strings...
  
  ***
  
  interface/splash.html
  
  This is also confusing.  "PROCESS html/header" says to me that it will
  process the file html/header, but that file is in the html directory;
  the directory there the result should be placed.  (Maby explaining
  where this template is located?)
  
  The WRAPPER example also needs an explanation. By now, I guess that
  many has forgotten what WRAPPER does.  And the [% title %] should be
  indented!
  
  The END tag can easily lead the mind to "This is the end of the
  template. Stop processing now."  And what leads to that you think of
  WRAPPER as a standalone directive, followed by the [% title %] thing,
  all by itself.  And then the template ends with END...  (Repetition of
  the basics maby?)
  
  And what is the value of $title?  Is it the value it got in the
  PROCESS tag?  That doesn't sound like localized variables.  I think it
  should be explained...
  
  ***
  
  content/generator.html and content/skeleton.html
  
  Some illustration of the relationship between these two is needed.
  Maby mention the two files ( src/product/index.html and
  lib/product/page ) on the first page.  Or some sort of diagram of how
  the pages are built.
  
  ***
  
  content/viewfiles.html
  
  I would like to see the resulting page here.  It looks like there is a
  name and price template missing.  Or is there a default view template?
  
  I would like to see the whole process in one page.  data ->
  main_template -> products -> product -> name.
  
  ***
  
  
  And thats all.  The rest is good.
  
  
  I would have send these comments the same day.  But some part of the
  network stopped me from reaching tt2.org... (A problem that lasted
  more than a day.)
  
  
  
  -- 
  / Jonas  -  http://jonas.liljegren.org/myself/en/index.html
  
  
  
  
  1.1                  Template2/todo_misc/jonas_segf
  
  Index: jonas_segf
  ===================================================================
  From: Jonas Liljegren <jonas@liljegren.org>
  In-Reply-To: <20010911161151.A98848@dog.ourshack.com>
  Message-ID: <87zo806s05.fsf@jonas.rit.se>
  User-Agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7
  MIME-Version: 1.0
  Content-Type: text/plain; charset=us-ascii
  Sender: templates-admin@template-toolkit.org
  Errors-To: templates-admin@template-toolkit.org
  X-BeenThere: templates@template-toolkit.org
  X-Mailman-Version: 2.0rc1
  Precedence: bulk
  List-Help: <mailto:templates-request@template-toolkit.org?subject=help>
  List-Post: <mailto:templates@template-toolkit.org>
  List-Subscribe: <http://www.template-toolkit.org/mailman/listinfo/templates>,
  	<mailto:templates-request@template-toolkit.org?subject=subscribe>
  List-Id: Template Toolkit mailing list <templates.template-toolkit.org>
  List-Unsubscribe: <http://www.template-toolkit.org/mailman/listinfo/templates>,
  	<mailto:templates-request@template-toolkit.org?subject=unsubscribe>
  List-Archive: <http://www.template-toolkit.org/pipermail/templates/>
  Date: 12 Sep 2001 23:03:54 +0200
  Status: RO
  Content-Length: 3626
  Lines: 115
  
  I tested and tested and tested...
  
  And finaly found the source for the problem.
  
  Here is a small program that segfaults on my system:
  
  ------------------------------------
  
  #!/usr/bin/perl -w
  use strict;
  use Template 2;
  use Carp;
  
  my $th = Template->new();
  
  my $params =
  {
   'myfunc'   => \&confess,
  };
  
  $th->process(\*DATA, $params);
  
  __DATA__
  [% myfunc() %]
  
  ------------------------------------
  
  
  In contrast; this program does not segfault:
  
  ------------------------------------
  
  #!/usr/bin/perl -w
  use strict;
  use Template 2;
  use Carp;
  
  use Template::Stash;
  my $stash = Template::Stash->new();
  my $th = Template->new(
  		       STASH => $stash,
  		      );
  
  my $params =
  {
   'myfunc'   => \&confess,
  };
  
  $th->process(\*DATA, $params);
  
  __DATA__
  [% myfunc() %]
  
  ------------------------------------
  
  
  
  
  This is for Template 2.04f, perl 5.6.1 (perl 5.6.1-5 in debian)
  
  Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration:
    Platform:
      osname=linux, osvers=2.4.5-ac9, archname=i386-linux
      uname='linux duende 2.4.5-ac9 #1 thu jun 21 00:52:39 est 2001 i686 unknown '
      config_args='-Dccflags=-DDEBIAN -Dcccdlflags=-fPIC -Darchname=i386-linux -Dprefix=/usr -Dprivlib=/usr/share/perl/5.6.1 -Darchlib=/usr/lib/perl/5.6.1 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.6.1 -Dsitearch=/usr/local/lib/perl/5.6.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Uusesfio -Dotherlibdirs=/usr/lib/perl5/5.6:/usr/lib/perl5/5.005 -Duseshrplib -Dlibperl=libperl.so.5.6.1 -Dd_dosuid -des'
      hint=recommended, useposix=true, d_sigaction=define
      usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
      useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
      use64bitint=undef use64bitall=undef uselongdouble=undef
    Compiler:
      cc='cc', ccflags ='-DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',    optimize='-O2',
      cppflags='-DDEBIAN -fno-strict-aliasing -I/usr/local/include'
      ccversion='', gccversion='2.95.4 20010604 (Debian prerelease)', gccosandvers=''
      intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
      d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
      ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
      alignbytes=4, usemymalloc=n, prototype=define
    Linker and Libraries:
      ld='cc', ldflags =' -L/usr/local/lib'
      libpth=/usr/local/lib /lib /usr/lib
      libs=-lgdbm -ldbm -ldb -ldl -lm -lc -lcrypt
      perllibs=-ldl -lm -lc -lcrypt
      libc=/lib/libc-2.2.3.so, so=so, useshrplib=true, libperl=libperl.so.5.6.1
    Dynamic Linking:
      dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
      cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib'
  
  
  Characteristics of this binary (from libperl): 
    Compile-time options: USE_LARGE_FILES
    Built under linux
    Compiled at Jun 22 2001 18:52:37
    @INC:
      /usr/local/lib/perl/5.6.1
      /usr/local/share/perl/5.6.1
      /usr/lib/perl5
      /usr/share/perl5
      /usr/lib/perl/5.6.1
      /usr/share/perl/5.6.1
      /usr/local/lib/site_perl
      /usr/lib/perl5/5.6/i386-linux
      /usr/lib/perl5/5.6
      /usr/lib/perl5/5.005/i386-linux
      /usr/lib/perl5/5.005
      .
  
  
  
  
  
  
  
  
  -- 
  / Jonas  -  http://jonas.liljegren.org/myself/en/index.html
  
  _______________________________________________
  templates mailing list
  templates@template-toolkit.org
  http://www.template-toolkit.org/mailman/listinfo/templates
  
  
  
  
  
  1.1                  Template2/todo_misc/tttp
  
  Index: tttp
  ===================================================================
  From: Tony Payne <anthonyp@petsmart.com>
  X-Sender: tony@petsmart.com
  Reply-To: Tony Payne <anthonyp@petsmart.com>
  To: templates@template-toolkit.org
  Message-ID: <Pine.LNX.4.21.0106181330250.9404-300000@petsmart.com>
  MIME-Version: 1.0
  Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-1215179187-992896492=:9404"
  Subject: [Templates] Template::Plugin::Session
  Sender: templates-admin@template-toolkit.org
  Errors-To: templates-admin@template-toolkit.org
  X-BeenThere: templates@template-toolkit.org
  X-Mailman-Version: 2.0rc1
  Precedence: bulk
  List-Help: <mailto:templates-request@template-toolkit.org?subject=help>
  List-Post: <mailto:templates@template-toolkit.org>
  List-Subscribe: <http://www.template-toolkit.org/mailman/listinfo/templates>,
  	<mailto:templates-request@template-toolkit.org?subject=subscribe>
  List-Id: Template Toolkit mailing list <templates.template-toolkit.org>
  List-Unsubscribe: <http://www.template-toolkit.org/mailman/listinfo/templates>,
  	<mailto:templates-request@template-toolkit.org?subject=unsubscribe>
  List-Archive: <http://www.template-toolkit.org/pipermail/templates/>
  Date: Mon, 18 Jun 2001 13:34:52 -0700 (PDT)
  Status: RO
  Content-Length: 6444
  Lines: 122
  
    This message is in MIME format.  The first part should be readable text,
    while the remaining parts are likely unreadable without MIME-aware tools.
    Send mail to mime@docserver.cac.washington.edu for more info.
  
  --8323328-1215179187-992896492=:9404
  Content-Type: TEXT/PLAIN; charset=US-ASCII
  
  
  Here is a hastily written plugin for Apache::Session.  I'm willing to
  maintain it, but I'm not sure if I have the time, so if someone else wants
  to own it, please be my guest.
  
  Hopefully someone will find it useful, since perl is now off-limits :~(
  
  ++t
  
  Tony Payne  :  Sr. Software Engineer  :  PETsMART.com  :  626-817-7151
  
  --8323328-1215179187-992896492=:9404
  Content-Type: TEXT/PLAIN; charset=US-ASCII; name="Session.pm"
  Content-Transfer-Encoding: BASE64
  Content-ID: <Pine.LNX.4.21.0106181334520.9404@petsmart.com>
  Content-Description: Session.pm
  Content-Disposition: attachment; filename="Session.pm"
  
  Iz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
  PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KIw0KIyBUZW1w
  bGF0ZTo6UGx1Z2luOjpTZXNzaW9uDQojDQojIERFU0NSSVBUSU9ODQojDQoj
  IEEgVGVtcGxhdGUgUGx1Z2luIHRvIHByb3ZpZGUgYSBUZW1wbGF0ZSBJbnRl
  cmZhY2UgdG8gQXBhY2hlOjpTZXNzaW9uDQojDQojIEFVVEhPUg0KIyAgIFRv
  bnkgUGF5bmUgPGFudGhvbnlwQHBldHNtYXJ0LmNvbT4NCiMNCiMgQ09QWVJJ
  R0hUDQojDQojICAgQ29weXJpZ2h0IChDKSAyMDAxIFRvbnkgUGF5bmUuICBB
  bGwgUmlnaHRzIFJlc2VydmVkDQojDQojICAgVGhpcyBtb2R1bGUgaXMgZnJl
  ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQoj
  ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSBzYW1lIHRlcm1zIGFzIFBlcmwgaXRz
  ZWxmLg0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
  LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K
  Iw0KIyAkSWQ6ICQNCiMNCg0KcGFja2FnZSBUZW1wbGF0ZTo6UGx1Z2luOjpT
  ZXNzaW9uOw0KDQpyZXF1aXJlIDUuMDA0Ow0KDQp1c2Ugc3RyaWN0Ow0KdXNl
  IFRlbXBsYXRlOjpQbHVnaW47DQp1c2UgQXBhY2hlOjpTZXNzaW9uOw0KDQp1
  c2UgdmFycyBxdygkVkVSU0lPTiAkREVCVUcpOw0KdXNlIGJhc2UgcXcoVGVt
  cGxhdGU6OlBsdWdpbik7DQoNCiRWRVJTSU9OID0gc3ByaW50ZigiJS4wMmYi
  LCAocSRSZXZpc2lvbjogMi40ICQgPX4gLyhcZCsuXGQrKS8pIC0gMSk7DQok
  REVCVUcgICA9IDAgdW5sZXNzIGRlZmluZWQgJERFQlVHOw0KDQojIExvYWQg
  YWxsIGtub3duIEFwYWNoZSBTZXNzaW9uIGltcGxlbWVudGF0aW9ucy4gIEln
  bm9yZSBlcnJvcnMuDQpCRUdJTiB7DQogIGV2YWwgew0KICAgIHJlcXVpcmUg
  QXBhY2hlOjpTZXNzaW9uOjpNeVNxbDsNCiAgfTsNCiAgZXZhbCB7DQogICAg
  cmVxdWlyZSBBcGFjaGU6OlNlc3Npb246OlBvc3RncmVzOw0KICB9Ow0KICBl
  dmFsIHsNCiAgICByZXF1aXJlIEFwYWNoZTo6U2Vzc2lvbjo6T3JhY2xlOw0K
  ICB9Ow0KICBldmFsIHsNCiAgICByZXF1aXJlIEFwYWNoZTo6U2Vzc2lvbjo6
  RmlsZTsNCiAgfTsNCiAgZXZhbCB7DQogICAgcmVxdWlyZSBBcGFjaGU6OlNl
  c3Npb246OkRCX0ZpbGU7DQogIH07DQp9DQoNCnN1YiBsb2FkIHsNCiAgbXkg
  KCRjbGFzcywgJGNvbnRleHQpID0gc2hpZnQ7DQogIHJldHVybiAkY2xhc3M7
  DQp9DQoNCnN1YiBuZXcgew0KICBteSAoJGNsYXNzLCAkY29udGV4dCwgJHNl
  c3Npb25faWQsICR0eXBlLCAkb3B0aW9ucykgPSBAXzsNCg0KICBteSAlc2Vz
  c2lvbjsNCg0KICAkc2Vzc2lvbl9pZCB8fD0gdW5kZWY7DQoNCiAgJHR5cGUg
  fHw9ICdBcGFjaGU6OlNlc3Npb246OkRCX0ZpbGUnOw0KICAkb3B0aW9ucyA9
  IHsgfSB1bmxlc3MgcmVmICRvcHRpb25zICYmIHJlZiAkb3B0aW9ucyBlcSAn
  SEFTSCc7DQogICRvcHRpb25zLT57RmlsZU5hbWV9IHx8PSAnL3RtcC9hcGFj
  aGVfc2Vzc2lvbnMvc2Vzc2lvbnMuZGInIA0KICAgIGlmICR0eXBlIGVxICdB
  cGFjaGU6OlNlc3Npb246OkRCX0ZpbGUnOw0KICAkb3B0aW9ucy0+e0xvY2tE
  aXJlY3Rvcnl9IHx8PSAnL3RtcC9hcGFjaGVfc2Vzc2lvbnMvbG9jaycgDQog
  ICAgaWYgJHR5cGUgZXEgJ0FwYWNoZTo6U2Vzc2lvbjo6REJfRmlsZSc7DQog
  ICANCiAgdGllICVzZXNzaW9uLCAkdHlwZSwgJHNlc3Npb25faWQsICRvcHRp
  b25zOw0KICAkc2Vzc2lvbntzZXNzaW9uX2lkfSA9ICRzZXNzaW9ue19zZXNz
  aW9uX2lkfTsNCiAgcmV0dXJuIFwlc2Vzc2lvbjsNCn0NCg0KMTsNCg0KX19F
  TkRfXw0K
  --8323328-1215179187-992896492=:9404
  Content-Type: TEXT/PLAIN; charset=US-ASCII; name="Session.tt2"
  Content-Transfer-Encoding: BASE64
  Content-ID: <Pine.LNX.4.21.0106181334521.9404@petsmart.com>
  Content-Description: Docs
  Content-Disposition: attachment; filename="Session.tt2"
  
  WyUgVEFHUyBzdGFyIC0lXQ0KPWhlYWQxIFNZTk9QU0lTDQoNCiAgICBbJSBV
  U0UgU2Vzc2lvbihzZXNzaW9uX2lkKSAlXQ0KDQogICAgWyUgU2Vzc2lvbi50
  aW1lc3RhbXAgPSB0aW1lICVdDQoNCiAgICBbJSBTZXNzaW9uLnNlc3Npb25f
  aWQgJV0NCiAgICANCj1oZWFkMSBERVNDUklQVElPTg0KDQpUaGlzIGlzIGEg
  VGVtcGxhdGUgVG9vbGtpdCBQbHVnaW4gSW50ZXJmYWNlIHRvIHRoZSBBcGFj
  aGU6OlNlc3Npb24NCm1vZHVsZS4gIEEgU2Vzc2lvbiBvYmplY3Qgd2lsbCBi
  ZSBpbnN0YW50aWF0ZWQgdmlhIHRoZSBmb2xsb3dpbmcgZGlyZWN0aXZlOg0K
  DQogICAgWyUgVVNFIFNlc3Npb24gJV0NCg0KVGhpcyB3aWxsIGNyZWF0ZSBh
  IG5ldyBzZXNzaW9uIGFuZCB3aWxsIGFzc2lnbiBhIG5ldyBzZXNzaW9uIGlk
  LiAgVG8gY29ubmVjdCB0bw0KYSBwcmUtZXhpc3Rpbmcgc2Vzc2lvbiwgc3Bl
  Y2lmeSB0aGUgc2Vzc2lvbiBpZDoNCg0KICAgIFslIFVTRSBTZXNzaW9uKHNl
  c3Npb25faWQpICVdDQoNCkJ5IGRlZmF1bHQsIHRoZSBTZXNzaW9uIHBsdWdp
  biBkZWZhdWx0cyB0byB1c2luZyBhIGJlcmtsZXkgZGIgZGF0YWJhc2UgZm9y
  IHRoZSANCnNlc3Npb24gc3RvcmUuICBZb3UgY2FuIG92ZXJyaWRlIHRoaXMs
  IGFuZCB0aGUgQXBhY2hlOjpTZXNzaW9uIG9wdGlvbnMgYnkgDQp1c2luZyB0
  aGUgc2Vjb25kIGFuZCB0aGlyZCBhcmd1bWVudHMgdG8gdGhlIGNvbnN0cnVj
  dG9yOg0KDQogICAgWyUgVVNFIFNlc3Npb24oDQogICAgICAgICAgICBzZXNz
  aW9uX2lkLCANCiAgICAgICAgICAgICdBcGFjaGU6OlNlc3Npb246Ok15U1FM
  JywgDQogICAgICAgICAgICB7IERhdGFTb3VyY2UgPT4gJ2RiaTpteXNxbDpz
  ZXNzb2lucycgfSkgJV0NCg0KUGxlYXNlIHNlZSBMPEFwYWNoZTo6U2Vzc2lv
  bj4gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaW1wbGVtZW50YXRpb25zIG9m
  IA0KQXBhY2hlOjpTZXNzaW9uLg0KDQo9aGVhZDEgTk9URQ0KDQpBcGFjaGU6
  OlNlc3Npb24gYXV0b21hdGljYWxseSBzdG9yZXMgY2hhbmdlcyBvbmx5IHRv
  IHRoZSB0b3AgbGF5ZXIgb2YgdGhlIGhhc2guDQpJZiBjaGFuZ2VzIGFyZSBt
  YWRlIHRvIGRhdGEgc3RydWN0dXJlcyBzdG9yZWQgYXMgdmFsdWVzIGluIHRo
  ZSBoYXNoLCB0aGVyZSBpcw0Kbm8gd2F5IGZvciB0aG9zZSBjaGFuZ2VzIHRv
  IGJlIG5vdGljZWQuICBJZiB5b3UgaGF2ZSBhIGNvbXBsaWNhdGVkIHNlc3Np
  b24gDQpvYmplY3QsIHlvdSBzaG91bGQgdG91Y2ggYSB0b3AtbGV2ZWwgYXR0
  cmlidXRlIGVhY2ggdGltZSB5b3UgY2hhbmdlIHNlc3Npb24NCmRhdGEuIA0K
  DQo9aGVhZDEgU1BFQ0lBTCBBVFRSSUJVVEVTDQoNCkFwYWNoZTo6U2Vzc2lv
  biBkZWZpbmVzIGEgX3Nlc3Npb25faWQgZGF0YSBtZW1iZXIsIHdoaWNoIGhv
  bGRzIHRoZSBzZXNzaW9uIGlkLg0KSG93ZXZlciwgc2luY2UgdGhpcyBpcyBp
  bmNvbXBhdGlibGUgd2l0aCBUZW1wbGF0ZS1Ub29sa2l0LCANClRlbXBsYXRl
  OjpQbHVnaW46OlNlc3Npb24gZGVmaW5lcyBhIHNlc3Npb25faWQgZGF0YSBt
  ZW1iZXIgYXMgd2VsbC4NCg0KPWhlYWQxIEFVVEhPUg0KDQpUb255IFBheW5l
  IEU8bHQ+YW50aG9ueXBAcGV0c21hcnQuY29tRTxndD4NCg0KWyogUFJPQ0VT
  UyBtaXNjL3ZlcnNpb24gKl0NCg0KPWhlYWQxIENPUFlSSUdIVA0KDQpDb3B5
  cmlnaHQgKEMpIDIwMDEgVG9ueSBQYXluZSBBbGwgUmlnaHRzIFJlc2VydmVk
  Lg0KDQpUaGlzIG1vZHVsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
  ZGlzdHJpYnV0ZSBpdCBhbmQvb3INCm1vZGlmeSBpdCB1bmRlciB0aGUgc2Ft
  ZSB0ZXJtcyBhcyBQZXJsIGl0c2VsZi4NCg0KWyogUFJPQ0VTUyBtaXNjL3Nl
  ZWFsc28NCiAgICBzZWVhbHNvPXBhZ2Uuc2VlYWxzbyAqXQ0K
  --8323328-1215179187-992896492=:9404--
  
  _______________________________________________
  templates mailing list
  templates@template-toolkit.org
  http://www.template-toolkit.org/mailman/listinfo/templates
  
  
  
  
  1.1                  Template2/todo_misc/xmlview
  
  Index: xmlview
  ===================================================================
  Finish off Template::Plugin::XML::View
  
  Don't know why I stopped working on this... there may be a design issue I
  hit which caused me to fault, or perhaps I just forgot about it?
   
  From what I can recall right now, it's a good idea waiting for a round tuit.
  
      -- abw 21 Sept 2001