[Templates-cvs] cvs commit: Template2 Changes HACKING INSTALL MANIFEST MANIFEST.SKIP Makefile.PL README TODO

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


cvs         06/05/26 13:44:22

  Modified:    .        Changes HACKING INSTALL MANIFEST MANIFEST.SKIP
                        Makefile.PL README TODO
  Log:
  Version 2.15
  
  Revision  Changes    Path
  2.83      +130 -42   Template2/Changes
  
  Index: Changes
  ===================================================================
  RCS file: /template-toolkit/Template2/Changes,v
  retrieving revision 2.82
  retrieving revision 2.83
  diff -u -r2.82 -r2.83
  --- Changes	2006/01/30 20:00:53	2.82
  +++ Changes	2006/05/26 13:44:21	2.83
  @@ -19,20 +19,77 @@
   #   Any changes you make here may be lost!
   #
   #------------------------------------------------------------------------
  -# $Id: Changes,v 2.82 2006/01/30 20:00:53 abw Exp $
  +# $Id: Changes,v 2.83 2006/05/26 13:44:21 abw Exp $
   #========================================================================
   
   #------------------------------------------------------------------------
  -# Version 2.15
  +# Version 2.15 - 26th May 2006
   #------------------------------------------------------------------------
   
  +Chomping Options
  +----------------
  +
  +* Added the CHOMP_GREEDY option and '~' chomping flag.  Changed 
  +  CHOMP_COLLAPSE to greedily chomp all whitespace (including multiple
  +  newlines) and replace it with a single space.  Previously it only
  +  chomped one line.  Renamed the CHOMP_ALL option to CHOMP_ONE which
  +  makes more sense.  CHOMP_ALL is still provided as an alias for 
  +  CHOMP_ONE for backwards compatibility.  Thanks to Paul Seamons for
  +  doing all the hard work on this.
  +
  +  http://tt2.org/pipermail/templates/2006-February/thread.html#8354
  +
  +* Added code to the replace text virtual method to use a faster and 
  +  simpler implementation if the replacement text doesn't contain any
  +  back references.  Thanks to Josh Rosenbaum for all his efforts on 
  +  this.
  +
  +  http://tt2.org/pipermail/templates/2006-February/008344.html
  +
   Stash
   -----
   
  +* Changed various tests for private/hidden variables (starting '_' 
  +  or '.') to use a regex defined in the $PRIVATE package variable in 
  +  Template::Stash.  This can be redefined or undefined.  Note that 
  +  the XS Stash only looks to see if $PRIVATE is defined or not, and
  +  currently hard-codes the regex.
  +
  +Plugins
  +-------
  +
  +* Changed the Image plugin tag() method to call the name() method 
  +  instead of accessing the name directly, making it easier for
  +  subclasses to provide an alternate name.  Thanks to Cees Hek for 
  +  his patch.
  +
  +  http://tt2.org/pipermail/templates/2006-February/008423.html
  +
  +* Change the AUTOLOAD regex in the Table plugin to be more robust.
  +
  +  http://tt2.org/pipermail/templates/2006-May/008602.html
  +
  +Documentation
  +-------------
  +
  +* Added the Template::Toolkit documentation pointing people to 
  +  the right place.
  +
  +* Updated the Template::Stash::XS documentation to remove the 
  +  "experimental" description and tidy things up a bit. 
  +
  +
  +#------------------------------------------------------------------------
  +# Version 2.14a - 2nd February 2006               ## DEVELOPER RELEASE ##
  +#------------------------------------------------------------------------
  +
  +Stash
  +-----
  +
   * Activated a patch in Template::Stash from Stephen Howard which adds
  -  code for the full set of fallbacks for dot ops called against objects
  -  which don't implement the specific method.  For example 
  -  [% hashobj.vmethod %] [% listobj.2 %] and [% listobj.vmethod %] now
  +  code for the full set of fallbacks for dot ops called against
  +  objects which don't implement the specific method.  For example 
  +  [% hashobj.vmethod %] [% listobj.2 %] and [% listobj.vmethod %] now 
     all work with the Perl Template::Stash.  Added code to the XS Stash 
     to do the same and updated tests.
   
  @@ -43,76 +100,91 @@
   
     http://tt2.org/pipermail/templates/2006-January/008266.html
   
  -* Applied path from Slaven Rezic to Template::Stash::XS to check return 
  -  code in tt_fetch_item() in a way which plays nicely with tied hashes.
  +* Applied path from Slaven Rezic to Template::Stash::XS to check
  +  return code in tt_fetch_item() in a way which plays nicely with tied
  +  hashes.
   
     http://rt.cpan.org/Ticket/Display.html?id=7830
   
  -* Changed Template::Stash and Template::Stash::XS to evaluate list 
  +* Changed Template::Stash and Template::Stash::XS to evaluate list
     vmethods in lvalues.
   
     http://tt2.org/pipermail/templates/2006-January/008198.html
   
   * Changed Template::Stash to be a little more strict about what it
  -  considers a failed method call.  This allows exception thrown 
  -  within called methods to be propagated correctly rather than 
  -  being ignored as undefined method.  Thanks to Dave Howorth for
  -  reporting the problem and providing a fix.  Also ported to the
  -  Template::Stash::XS module.
  +  considers a failed method call.  This allows exception thrown within
  +  called methods to be propagated correctly rather than being ignored
  +  as undefined method.  Thanks to Dave Howorth, Tom Insam and Stig 
  +  Brautaset for reporting the problem and providing fixes.
   
     http://tt2.org/pipermail/templates/2005-April/007375.html
  +  http://tt2.org/pipermail/templates/2006-February/008367.html
  +
  +* Removed redundant performance profiling code from
  +  Template::Stash::XS.  Must check with Doug that this is OK and he's
  +  not still using it...
   
  -* Removed redundant performance profiling code from Template::Stash::XS.
  -  Must check with Doug that this is OK and he's not still using it...
   
   Virtual Methods
   ---------------
  +
  +* Added the scalar.remove, scalar.substr, hash.delete, hash.items,
  +  hash.pairs, list.import and list.hash virtual methods.
  +
  +* Changed the scalar.replace method to work properly with back
  +  references ($1, $2, etc) by incorporating ideas, code and tests from
  +  Nik Clayton, Paul Seamon, Sergey Martynoff, Josh Rosenbaum and
  +  others.
  +
  +  http://tt2.org/pipermail/templates/2006-February/008306.html
  +  http://tt2.org/pipermail/templates/2006-February/008326.html
   
  -* Changed list.hash and hash.list vmethods to Do The Right Thing instead
  -  of some crack fuelled nonsense.  hash.list now returns [ %$hash ]
  -  and list.hash now returns [ @$list ]
  -
  -  http://template-toolkit.org/pipermail/templates/2006-January/008256.html
  -
  -* Fixed the split scalar virtual method which wasn't accepting the second
  -  argument (limit) correctly.  Thanks to Josh Rosenbaum for pointing
  -  out the problem, although the solution turned out to be a little more 
  -  complicated.
  +* Changed list.push and list.unshift to accept multiple arguments,
  +  thanks to Bill Moseley.
   
  +  http://tt2.org/pipermail/templates/2006-January/008294.html
  +
  +* Fixed the split scalar virtual method which wasn't accepting the
  +  second argument (limit) correctly.  Thanks to Josh Rosenbaum for
  +  pointing out the problem.
  +
     http://tt2.org/pipermail/templates/2005-October/007982.html
   
  -* Added the 'delete' hash virtual method and the 'remove' scalar virtual
  -  method.
  +* Documented the fact that hash.list is going to change in the future,
  +  recommending people switch to hash.pairs.
   
  -* Changed $element to $component in Template::Context to fix callers bug, 
  -  thanks to Andy Maas who identified the problem and found the solution:
  +  http://tt2.org/pipermail/templates/2006-January/008256.html
  +  http://tt2.org/pipermail/templates/2006-February/008312.html
   
  -  http://tt2.org/pipermail/templates/2004-December/007020.html
  +* Added the global option to the 'match' scalar virtual method.
   
  -* Fixed the regex matching relative paths in Template::Provider, thanks
  -  to Josh Rosenbaum 
  +* Changed $element to $component in Template::Context to fix callers
  +  bug, thanks to Andy Maas who identified the problem and found the
  +  solution:
   
  -  http://tt2.org/pipermail/templates/2005-January/007141.html
  +  http://tt2.org/pipermail/templates/2004-December/007020.html
   
  -* Changed the sort and nsort list virtual methods to always return 
  +* Changed the sort and nsort list virtual methods to always return
     references to lists, avoiding any ambiguity in return results.
   
  -* Changed the hash.defined method to do the same thing as scalar.defined
  -  when called without arguments.  Added list.defined to do the same thing
  -  as hash.defined.
  +* Changed the hash.defined method to do the same thing as
  +  scalar.defined when called without arguments.  Added list.defined to
  +  do the same thing as hash.defined.
   
     http://rt.cpan.org/Ticket/Display.html?id=9094
   
  +* Moved all the tests into t/vmethods/*
  +
   
   Plugins
   -------
   
   * Added the $Template::Plugins::PLUGIN_BASE package variable to define
  -  the default 'Template::Plugin' value for the PLUGIN_BASE option.
  -  By clearing this value before calling the Template new() constructor,
  -  you can avoid having Template::Plugin added to the PLUGIN_BASE by 
  +  the default 'Template::Plugin' value for the PLUGIN_BASE option.  By
  +  clearing this value before calling the Template new() constructor,
  +  you can avoid having Template::Plugin added to the PLUGIN_BASE by
     default.  Also changed PLUGINS search to look for lower case plugin
  -  name as well as case-specific name.  Thanks yet again Josh for 
  +  name as well as case-specific name.  Thanks yet again Josh for
     addressing this issue.
   
     http://tt2.org/pipermail/templates/2006-January/008225.html
  @@ -172,7 +244,7 @@
     http://rt.cpan.org/Ticket/Display.html?id=5695
   
   * Updated documentation to reflect the fact that the html filter also
  -  escapes " as "  Thanks to Geoff Richards for reporting it.
  +  escapes " as " Thanks to Geoff Richards for reporting it.
   
   * Moved Latex filters into Template-Latex distribution.
   
  @@ -201,6 +273,11 @@
   
     http://rt.cpan.org/Ticket/Display.html?id=4180
   
  +* added AppConfig EXPAND => EXPAND_ALL option to perl5lib, 
  +  template_plugin_base, template_compile_dir and depend_file
  +  configuration options to allow them to contain ~ to indicate
  +  the user's home directory, or $WHATEVER for environment variables,
  +  as per the other path-specific options like src, lib, etc.
   
   Miscellaneous
   -------------
  @@ -219,6 +296,17 @@
     Template::Parser line counting when using chomp flags.
   
     http://tt2.org/pipermail/templates/2005-December/008157.html
  +
  +* Applied a patch from Jess Robinson to move the Template::Provider
  +  check for file freshness into a separate method, in order to 
  +  play nicely with his Template::Provider::DBI module.
  +
  +  http://tt2.org/pipermail/templates/2005-December/008143.html
  +
  +* Fixed the regex matching relative paths in Template::Provider, thanks
  +  to Josh Rosenbaum 
  +
  +  http://tt2.org/pipermail/templates/2005-January/007141.html
   
   * Applied a patch to Template::Provider to prevent a misleading error
     message, thanks to Slaven Rezic.
  
  
  
  2.34      +3 -3      Template2/HACKING
  
  Index: HACKING
  ===================================================================
  RCS file: /template-toolkit/Template2/HACKING,v
  retrieving revision 2.33
  retrieving revision 2.34
  diff -u -r2.33 -r2.34
  --- HACKING	2006/01/30 20:02:49	2.33
  +++ HACKING	2006/05/26 13:44:21	2.34
  @@ -3,9 +3,9 @@
   
                                 Version 2.15
   
  -                             30 January 2006
  +                             26 May 2006
   
  -        Copyright (C) 1996-2004 Andy Wardley.  All Rights Reserved
  +        Copyright (C) 1996-2006 Andy Wardley.  All Rights Reserved
           Copyright (C) 1998-2002 Canon Research Centre Europe Ltd.
   
             This is free software; you can redistribute it and/or
  @@ -60,7 +60,7 @@
   COPYRIGHT
   ---------
   
  -Copyright (C) 1996-2004 Andy Wardley.  All Rights Reserved.
  +Copyright (C) 1996-2006 Andy Wardley.  All Rights Reserved.
   Copyright (C) 1998-2002 Canon Research Centre Europe Ltd.
   
   This is free software; you can redistribute it and/or modify it under
  
  
  
  2.36      +6 -14     Template2/INSTALL
  
  Index: INSTALL
  ===================================================================
  RCS file: /template-toolkit/Template2/INSTALL,v
  retrieving revision 2.35
  retrieving revision 2.36
  diff -u -r2.35 -r2.36
  --- INSTALL	2006/01/30 20:02:49	2.35
  +++ INSTALL	2006/05/26 13:44:21	2.36
  @@ -3,9 +3,9 @@
   
                                 Version 2.15
   
  -                             30 January 2006
  +                             26 May 2006
   
  -        Copyright (C) 1996-2004 Andy Wardley.  All Rights Reserved
  +        Copyright (C) 1996-2006 Andy Wardley.  All Rights Reserved
           Copyright (C) 1998-2002 Canon Research Centre Europe Ltd.
   
             This is free software; you can redistribute it and/or
  @@ -53,9 +53,9 @@
   -------------
   
   The Template Toolkit is written entirely in Perl and should run on any 
  -platform on which Perl is available.  It requires Perl 5.005 or later.
  +platform on which Perl is available.  It requires Perl 5.006 or later.
   
  -The 'ttree' utility uses the AppConfig module (version 1.55 or above)
  +The 'ttree' utility uses the AppConfig module (version 1.56 or above)
   for parsing command line options and configuration files.  It is
   available from CPAN:
   
  @@ -113,11 +113,6 @@
   number of configuration items.  The following CONFIGURATION section
   covers this in greater detail.
   
  -There are known to be a few minor issues with the test suite, with
  -some tests failing in certain conditions.  None of these are thought
  -to be serious problems.  The BUILDING AND TESTING section provides
  -more detail on this.
  -
   If you choose to install the optional components then you may need to
   perform some post-installation steps to ensure that the template
   libraries, HTML documentation and examples can be correctly viewed via
  @@ -326,11 +321,8 @@
       make
   
   The 'make test' command runs the test scripts in the 't' subdirectory.
  -There is known to be at least one failures under certain conditions:
   
  -  * The Text::Autoformat plugin may fail on tests 23 and 25 with
  -    versions of Perl prior to 5.6.0 when using a locale which has a
  -    decimal separator other than '.'.
  +    make test
   
   You can set the TEST_VERBOSE flag when running 'make test' to see the
   results of the individual tests:
  @@ -486,7 +478,7 @@
   COPYRIGHT
   ---------
   
  -Copyright (C) 1996-2004 Andy Wardley.  All Rights Reserved.
  +Copyright (C) 1996-2006 Andy Wardley.  All Rights Reserved.
   Copyright (C) 1998-2002 Canon Research Centre Europe Ltd.
   
   This is free software; you can redistribute it and/or modify it under
  
  
  
  2.42      +35 -28    Template2/MANIFEST
  
  Index: MANIFEST
  ===================================================================
  RCS file: /template-toolkit/Template2/MANIFEST,v
  retrieving revision 2.41
  retrieving revision 2.42
  diff -u -r2.41 -r2.42
  --- MANIFEST	2006/02/02 11:53:02	2.41
  +++ MANIFEST	2006/05/26 13:44:21	2.42
  @@ -1,17 +1,10 @@
  -Changes
  -HACKING
  -INSTALL
  -MANIFEST
  -Makefile.PL
  -README
  -TODO
  -bin/README
   bin/gifsplash
  +bin/README
   bin/tpage
   bin/tt-bench.pl
   bin/tt2inst
   bin/ttree
  -docs/README
  +Changes
   docs/html/README
   docs/lib/config
   docs/lib/docset/config
  @@ -24,25 +17,28 @@
   docs/lib/subsection
   docs/lib/toc
   docs/lib/tocitem
  +docs/README
   docs/src/FAQ/FAQ.html
   docs/src/FAQ/index.html
  +docs/src/index.html
   docs/src/Library/HTML.html
  +docs/src/Library/index.html
   docs/src/Library/PostScript.html
   docs/src/Library/Splash.html
  -docs/src/Library/index.html
   docs/src/Manual/Config.html
   docs/src/Manual/Credits.html
   docs/src/Manual/Directives.html
   docs/src/Manual/Filters.html
  +docs/src/Manual/index.html
   docs/src/Manual/Internals.html
   docs/src/Manual/Intro.html
   docs/src/Manual/Plugins.html
   docs/src/Manual/Refs.html
   docs/src/Manual/Syntax.html
  -docs/src/Manual/VMethods.html
   docs/src/Manual/Variables.html
   docs/src/Manual/Views.html
  -docs/src/Manual/index.html
  +docs/src/Manual/VMethods.html
  +docs/src/Modules/index.html
   docs/src/Modules/Template.html
   docs/src/Modules/Template/Base.html
   docs/src/Modules/Template/Config.html
  @@ -75,6 +71,7 @@
   docs/src/Modules/Template/Plugin/URL.html
   docs/src/Modules/Template/Plugin/View.html
   docs/src/Modules/Template/Plugin/Wrap.html
  +docs/src/Modules/Template/Plugin/XML/Style.html
   docs/src/Modules/Template/Plugins.html
   docs/src/Modules/Template/Provider.html
   docs/src/Modules/Template/Service.html
  @@ -82,20 +79,19 @@
   docs/src/Modules/Template/Stash/Context.html
   docs/src/Modules/Template/Stash/XS.html
   docs/src/Modules/Template/Test.html
  -docs/src/Modules/index.html
  +docs/src/Modules/Template/Toolkit.html
   docs/src/Release/Changes.html
   docs/src/Release/HACKING.html
  +docs/src/Release/index.html
   docs/src/Release/INSTALL.html
   docs/src/Release/README.html
   docs/src/Release/TODO.html
  -docs/src/Release/index.html
   docs/src/Tools/index.html
   docs/src/Tools/tpage.html
   docs/src/Tools/ttree.html
   docs/src/Tutorial/Datafile.html
  -docs/src/Tutorial/Web.html
   docs/src/Tutorial/index.html
  -docs/src/index.html
  +docs/src/Tutorial/Web.html
   docs/style/plain/booktabs
   docs/style/plain/footer
   docs/style/plain/header
  @@ -109,14 +105,12 @@
   docs/style/splash/navigate
   docs/style/splash/pagemenu
   docs/style/splash/section
  -examples/README
   examples/html/README
  -examples/lib/README
   examples/lib/config
  -examples/lib/example/README
   examples/lib/example/break
   examples/lib/example/html
   examples/lib/example/output
  +examples/lib/example/README
   examples/lib/example/source
   examples/lib/example/split2
   examples/lib/example/split2ps
  @@ -128,7 +122,6 @@
   examples/lib/example/vsplit2s
   examples/lib/example/vsplit3
   examples/lib/example/vsplit50
  -examples/lib/examples/README
   examples/lib/examples/html/bars/1
   examples/lib/examples/html/bars/10
   examples/lib/examples/html/bars/11
  @@ -187,6 +180,7 @@
   examples/lib/examples/ps/marks/7
   examples/lib/examples/ps/marks/8
   examples/lib/examples/ps/marks/9
  +examples/lib/examples/README
   examples/lib/examples/splash/bar/1
   examples/lib/examples/splash/bar/2
   examples/lib/examples/splash/bar/3
  @@ -271,6 +265,7 @@
   examples/lib/examples/splash/text/5
   examples/lib/menu
   examples/lib/page
  +examples/lib/README
   examples/lib/source
   examples/lib/splash/about/bar
   examples/lib/splash/about/box
  @@ -288,6 +283,7 @@
   examples/lib/splash/about/tabsbox
   examples/lib/splash/about/tabset
   examples/lib/splash/about/text
  +examples/README
   examples/src/html/bars.html
   examples/src/html/headers.html
   examples/src/html/index.html
  @@ -317,6 +313,7 @@
   examples/src/splash/tabsbox.html
   examples/src/splash/tabset.html
   examples/src/splash/text.html
  +HACKING
   images/splash/black/bl.gif
   images/splash/black/blhair.gif
   images/splash/black/box.gif
  @@ -343,6 +340,7 @@
   images/splash/black/up.gif
   images/tt2power.gif
   images/ttdotorg.gif
  +INSTALL
   lib/Template.pm
   lib/Template/Base.pm
   lib/Template/Config.pm
  @@ -368,9 +366,9 @@
   lib/Template/Manual/Plugins.pod
   lib/Template/Manual/Refs.pod
   lib/Template/Manual/Syntax.pod
  -lib/Template/Manual/VMethods.pod
   lib/Template/Manual/Variables.pod
   lib/Template/Manual/Views.pod
  +lib/Template/Manual/VMethods.pod
   lib/Template/Modules.pod
   lib/Template/Namespace/Constants.pm
   lib/Template/Parser.pm
  @@ -402,17 +400,21 @@
   lib/Template/Stash/Context.pm
   lib/Template/Stash/XS.pm
   lib/Template/Test.pm
  +lib/Template/Toolkit.pod
   lib/Template/Tools/tpage.pod
   lib/Template/Tools/ttree.pod
   lib/Template/Tutorial.pod
   lib/Template/Tutorial/Datafile.pod
   lib/Template/Tutorial/Web.pod
   lib/Template/View.pm
  +Makefile.PL
  +MANIFEST
  +META.yml			Module meta-data (added by MakeMaker)
   parser/Grammar.pm.skel
   parser/Parser.yp
   parser/README
   parser/yc
  -t/README
  +README
   t/args.t
   t/autoform.t
   t/base.t
  @@ -443,6 +445,7 @@
   t/exception.t
   t/factory.t
   t/file.t
  +t/fileline.t
   t/filter.t
   t/foreach.t
   t/format.t
  @@ -466,6 +469,7 @@
   t/proc.t
   t/process.t
   t/provider.t
  +t/README
   t/ref.t
   t/service.t
   t/skel.t
  @@ -486,12 +490,12 @@
   t/test/dir/sub_two/waz.html
   t/test/dir/sub_two/wiz.html
   t/test/dir/xyzfile
  -t/test/lib/README
   t/test/lib/after
   t/test/lib/badrawperl
   t/test/lib/barfed
   t/test/lib/before
   t/test/lib/blockdef
  +t/test/lib/chomp
   t/test/lib/config
   t/test/lib/content
   t/test/lib/default
  @@ -505,16 +509,17 @@
   t/test/lib/one/foo
   t/test/lib/outer
   t/test/lib/process
  +t/test/lib/README
   t/test/lib/trimme
   t/test/lib/two/bar
   t/test/lib/two/foo
   t/test/lib/udata1
   t/test/lib/udata2
  +t/test/lib/warning
   t/test/plugin/MyPlugs/Bar.pm
   t/test/plugin/MyPlugs/Baz.pm
   t/test/plugin/MyPlugs/Foo.pm
   t/test/pod/test1.pod
  -t/test/src/README
   t/test/src/bar/baz
   t/test/src/bar/baz.txt
   t/test/src/baz
  @@ -529,12 +534,14 @@
   t/test/src/leak2
   t/test/src/metadata
   t/test/src/mywrap
  +t/test/src/README
   t/test/src/recurse
   t/test/tmp/README
   t/text.t
   t/throw.t
   t/tiedhash.t
   t/try.t
  +t/unicode.t
   t/url.t
   t/vars.t
   t/varsv1.t
  @@ -546,7 +553,6 @@
   t/while.t
   t/wrap.t
   t/wrapper.t
  -templates/README
   templates/html/bar
   templates/html/body
   templates/html/box
  @@ -608,6 +614,7 @@
   templates/ps/tilemap
   templates/ps/tilepage
   templates/ps/tiles
  +templates/README
   templates/splash/bar
   templates/splash/box
   templates/splash/breakdown
  @@ -630,9 +637,9 @@
   templates/splash/text
   templates/splash/ttdotorg
   templates/splash/ttpower
  -xs/MANIFEST
  +TODO
   xs/Makefile.PL
  +xs/MANIFEST
  +xs/ppport.h
   xs/README
   xs/Stash.xs
  -xs/ppport.h
  -META.yml                                 Module meta-data (added by MakeMaker)
  
  
  
  2.15      +0 -2      Template2/MANIFEST.SKIP
  
  Index: MANIFEST.SKIP
  ===================================================================
  RCS file: /template-toolkit/Template2/MANIFEST.SKIP,v
  retrieving revision 2.14
  retrieving revision 2.15
  diff -u -r2.14 -r2.15
  --- MANIFEST.SKIP	2002/07/07 14:42:47	2.14
  +++ MANIFEST.SKIP	2006/05/26 13:44:21	2.15
  @@ -23,7 +23,6 @@
   ^lib/Template/Arena
   ^lib/Template/Map
   ^lib/Template/Plugin/XML/View
  -^lib/Template/Plugin/Math
   ^lib/Template/Plugin/List
   ^pm_to_blib$
   ^bin/prep
  @@ -45,7 +44,6 @@
   ^t/dbi_test.cfg
   ^t/shout.t
   ^t/map.t
  -^t/math.t
   ^t/docset.t
   ^t/xmlview.t
   ^t/test/src/complex.org
  
  
  
  2.46      +1 -0      Template2/Makefile.PL
  
  Index: Makefile.PL
  ===================================================================
  RCS file: /template-toolkit/Template2/Makefile.PL,v
  retrieving revision 2.45
  retrieving revision 2.46
  diff -u -r2.45 -r2.46
  --- Makefile.PL	2006/02/02 11:53:24	2.45
  +++ Makefile.PL	2006/05/26 13:44:21	2.46
  @@ -1,6 +1,7 @@
   #!/usr/bin/perl -w                                         # -*- perl -*-
   
   use strict;
  +use warnings;
   
   use lib qw( ./lib );
   use Config;
  
  
  
  2.62      +23 -6     Template2/README
  
  Index: README
  ===================================================================
  RCS file: /template-toolkit/Template2/README,v
  retrieving revision 2.61
  retrieving revision 2.62
  diff -u -r2.61 -r2.62
  --- README	2006/01/30 20:02:49	2.61
  +++ README	2006/05/26 13:44:21	2.62
  @@ -3,9 +3,9 @@
   
                                 Version 2.15
   
  -                             30 January 2006
  +                             26 May 2006
   
  -        Copyright (C) 1996-2004 Andy Wardley.  All Rights Reserved
  +        Copyright (C) 1996-2006 Andy Wardley.  All Rights Reserved
           Copyright (C) 1998-2002 Canon Research Centre Europe Ltd.
   
             This is free software; you can redistribute it and/or
  @@ -69,10 +69,27 @@
   WHAT'S NEW?
   -----------
   
  -Version 2.15 features a number of enhancements to the XS Stash that
  -includes support for tied hashes and arrays.  There are numerous other
  -bug fixes and enhancements, described in detail in the Changes file.
  +Version 2.15 is a major maintenance release.  It applies all outstanding
  +patches and closes all open bugs listed on http://rt.cpan.org/  It
  +includes:
  +
  + * XS Stash: enhancements include support for tied hashes/arrays
  +   and "fallback" methods on objects (e.g. accessing hash and 
  +   list items and calling virtual methods)
  +
  + * Virtual Methods: added the scalar.remove, scalar.substr,
  +   hash.delete, hash.items, hash.pairs, list.import and list.hash
  +   virtual methods.  Added support for backreferences to
  +   scalar.replace and other improvements to list.push, list.unshift,
  +   list.hash, hash.list
  +
  + * Plugins: Added Math plugin, Bug fixes and enhancements to File,
  +   Image, URL and String plugins.  Moved DBI, XML and GD plugins 
  +   into separate distributions.
   
  + * Numerous other bug fixes, enhancements, documentation updates, all
  +   described in detail in the Changes file.
  +
   More significant is what's not in version 2.15.  The DBI plugin has
   been moved into a separate Template-DBI distribution, the GD plugins
   into Template-GD, the XML plugins into Template-XML, and the Latex
  @@ -291,7 +308,7 @@
   COPYRIGHT
   ---------
   
  -Copyright (C) 1996-2004 Andy Wardley.  All Rights Reserved.
  +Copyright (C) 1996-2006 Andy Wardley.  All Rights Reserved.
   Copyright (C) 1998-2002 Canon Research Centre Europe Ltd.
   
   This is free software; you can redistribute it and/or modify it under
  
  
  
  2.84      +13 -386   Template2/TODO
  
  Index: TODO
  ===================================================================
  RCS file: /template-toolkit/Template2/TODO,v
  retrieving revision 2.83
  retrieving revision 2.84
  diff -u -r2.83 -r2.84
  --- TODO	2006/05/25 11:23:34	2.83
  +++ TODO	2006/05/26 13:44:21	2.84
  @@ -8,16 +8,19 @@
   #   and a few whacky ideas.
   #
   # AUTHOR
  -#   Andy Wardley   <abw@wardley.org>
  +#   Andy Wardley   <abw@cpan.org>
   #
   #------------------------------------------------------------------------
  -# $Id: TODO,v 2.83 2006/05/25 11:23:34 abw Exp $
  +# $Id: TODO,v 2.84 2006/05/26 13:44:21 abw Exp $
   #========================================================================
   
   #------------------------------------------------------------------------
   # Miscellaneous
   #------------------------------------------------------------------------
   
  +* The ENCODING options needs testing and documenting.  Bill Moseley said
  +  he may be able to do this.
  +
   * The 'eval' filter leaks memory, as reported by Colin Johnson.  The
     filter subroutine created contains a reference to the context and then
     gets cached in the FILTER_CACHE item of the context.  Hey presto -
  @@ -51,34 +54,8 @@
     between sessions and the same files in different INCLUDE_PATH dirs
     maps to the samed compiled version) but is convenient for those times
     when you know that's not going to be a problem.
  -
  -* Richard Tietjen's patch for stash replace.  Allows back references
  -  (e.g. $1) but it would be nice to find a rock-solid way to implement
  -  it without relying on unusual ^A delimiter character. 
  -
  -* Further to the above, Craig Barratt has this solution which will be 
  -  going into the next verion (2.05b) unless anyone has any further 
  -  suggestions to make before then.
  -
  -    It would be great if replace handled backreferences.  I don't like
  -    the ^A solution since the string could contain ^A, plus it is a
  -    security hole.  The attempt I posted only works for up to 9
  -    backreferences and doesn't handle an escaped '\$' and uses nested
  -    evals:
  -
  -        $str =~ s{$search}{
  -		my $r = $replace;
  -		my @d = (0, $1, $2, $3, $4, $5, $6, $7, $8, $9);
  -		$r =~ s/\$(\d+)/$d[$1]/eg;
  -		$r;
  -	      }eg;
  -
  -    I wish there was a perl predefined variable array containing all
  -    the backreferences (is there one?).  You can avoid the hard-coded
  -    limit of 9 with extra evals, and a bit of work on the re could
  -    handle the escaped '\$' case, so maybe that would be good enough.
   
  -* Craig also notes, in fixing the problem with NEXT not working 
  +* Craig Barratt notes, in fixing the problem with NEXT not working 
     inside SWITCH (see Changes v2.04):
   
       By the way, I came across another arcane bug:
  @@ -135,30 +112,6 @@
   
   
   #------------------------------------------------------------------------
  -# Stash
  -#------------------------------------------------------------------------
  -
  -* The XS Stash does not work with tied hashes (e.g. DBI.tie).  Also note
  -  that enabling the XS Stash cause all the Template::* modules to be 
  -  installed in an architecture-dependant directory.  For info, see
  -  http://www.tt2.org/pipermail/templates/2001-September/001568.html
  -
  -* Jonas Liljegren reports a segfault when using the XS Stash under 
  -  Apache/mod_perl with certain undefined variables.  At the time of
  -  writing detail is scarce.  Check the mailing list for further
  -  details.
  -
  -* Stas Bekman raised the issue of the Stash not being able to correctly
  -  differentiate between scalar/list context and in particular, the 
  -  cgi.param examples not working as expected.  This is fixed in v3 and 
  -  in Craig's Stash/Context.pm which does the right lookahead to allow
  -  'scalar' and 'list' postfix operators.  e.g. cgi.param.list
  -
  -* Have stash, etc., add current template name/line when reporting errors.
  -  (may be tricky under the current implementation)
  -
  -
  -#------------------------------------------------------------------------
   # Parser
   #------------------------------------------------------------------------
   
  @@ -177,64 +130,6 @@
         #  foo                <- this gets printed
       %]
   
  -* Allow { and } as block delimiters, replacing for the ugly ';' and
  -  big, chunky [% END %] approach.
  -
  -  e.g. something like:
  -
  -    [% FOREACH a = [ 1 2 3 ] %]
  -       [% IF b == a %]
  -	  [% INCLUDE foo %]
  -       [% ELSE %]
  -	  [% INCLUDE bar %]
  -       [% END %]
  -    [% END %]
  -
  -   could be written as:
  -
  -    [%	FOREACH a = [ 1 2 3 ] {
  -	    IF b == a {
  -		INCLUDE foo
  -	    }
  -	    ELSE {
  -		INCLUDE bar
  -	    }
  -	}
  -    %]
  -
  -* Ability to set different parser options for BLOCK definitions, etc.
  -
  -    [% BLOCK header
  -         eval_perl = 0
  -         pre_chomp = 1
  -    %]
  -       ...
  -    [% END %]
  -
  -  Anonymous BLOCK can then be used to set a parser scope
  -
  -    [% BLOCK trim=1 %]
  -       ...
  -    [% END %]
  -
  -    [% BLOCK trim=0 %]
  -       ...
  -    [% END %]
  -
  -  And/or set different tag styles, etc.
  -
  -    [% BLOCK tags='star' %]
  -       [* INCLUDE this_is_a_directive *]
  -       [% INCLUDE this_is_not %]   
  -    [* END *]
  -
  -    [% INCLUDE back_to_normal %]
  -
  -  This is likely to be a TT3 feature and I've already got the basic
  -  parser for this up and running.  It might get back-pactched into 
  -  version 2, otherwise you might have to wait for the first alpha 
  -  release of verion 3.
  -
   * Craig Barratt reports the following:
   
     I looked at Parse.yp to see how hard it would be to push FILTER
  @@ -332,26 +227,16 @@
   * We need a way to easily enable/disable certain plugins.  This should
     be addressed by facility provision.  Probably something for v3.
   
  -* The Text::Autoformat module has some problems with versions of Perl
  -  prior to 5.6.0 when using a locale which has a decimal separator
  -  other than '.' (e.g. Swedish, which uses ',').  Damian has been made
  -  aware of the problem (and I note he now has a new version out which
  -  I need to check).  For now, the Makefile.PL issues a warning but
  -  continues regardless.
  -
   * The Template::Plugin DBI iterator first/last() methods don't behave 
     the same as list first/last().  Randal also reports that get_all()
  -  doesn't work as it should - may be a conflict in code/docs?
  +  doesn't work as it should - may be a conflict in code/docs?  Again,
  +  this is a problem to solve in TT3.
   
   * PLUGINS could accept a reference to an object which is used as a 
     singleton factory for a plugin.  (NOTE: 2.01 includes PLUGIN_FACTORY
     to implement this, but currently undocumented because it's likely to
     change).
   
  -* Add Leo & Leon's Page plugin, or try to find some way of implementing
  -  it in terms of the Table plugin.  I think the jury is still out on the
  -  matter of whether it counts as duplicated functionality.
  -
   * A more general solution for XML (e.g. DOM, XPath, etc) would be for
     TT to support a PerlSAX handler which generates the appropriate
     callbacks to the view.  This should make it possible to easily
  @@ -414,6 +299,11 @@
   # Splash!
   #------------------------------------------------------------------------
   
  +The Splash! library will be extracted into a separate distribution at
  +some point (probably when TT3 is released, possibly before).  At that
  +point it will deprecated (read: not supported by me any more) in favour
  +of something better.
  +
   The current implementation is a fairly ugly hack to get something up
   and running that's good enough to use.  It's mainly template driven
   and doesn't scale very well, particularly with global variables
  @@ -464,266 +354,3 @@
     a chance to fix a couple of minor bugs relating to '/' vs '\' file
     separators.
   
  -
  -#------------------------------------------------------------------------
  -# Facilities
  -#------------------------------------------------------------------------
  -
  -Core facilities currently implemented by Template::Context should be
  -moved out into separate facilities.  These currently fall into the
  -categories of things like stash, view, plugins, filters, parser and
  -maybe some others.  (NOTE: this might tie in very closely with Camelot
  -and the resource/presenter/actor breakdown, aka model/view/controller).
  -
  -* 'view' would handle template fetching and processing.  It is the view
  -  that talks to a provider, possibly adding special prefixes, suffixes,
  -  doing default templates, special dispatch logic, etc.
  -
  -* 'stash' is responsible for storing variables, as it currently is.
  -
  -* 'plugins' is responsible for fetching plugins.
  -
  -* 'filters' is responsible for fetching filters.
  -
  -* maybe both the above would get bundled into something like 'logic'?
  -
  -* 'parser' would make parts of the parser accessible
  -
  -* 'output' could be used to generate output
  -
  -There would be some facility to install, customise and remove facilities
  -to modify TT behaviour as required.  This would allow us to disable 
  -certain plugins, or remove the plugin facility altogether, for example.
  -Or we could install a new stash facility which generated a different kind
  -of code (e.g. less magic, more speed).  Or install a new custom facility
  -to do some application or domain specific task.
  -
  -Facilities should be accessible via the context:
  -
  -    my $stash = $context->stash();	# currently works
  -    my $view  = $context->view();	# not yet
  -
  -General form:
  -
  -    my $xyz = $context->facility('xyz');
  -
  -Multiple form:
  -
  -    my ($a, $b, $c) = $context->facility(qw[ a b c ]);
  -
  -This can then be written into generated code pretty much as the stash
  -currently is.  The facilities would define the code generators that
  -currently clutter up Template::Directives.  They would ensure that the
  -facility is scheduled to be requested from the context at the start of
  -the sub:
  -
  -    sub {
  -	my $context = shift;
  -	my ($stash, $view) = $context->faciity(qw( stash view ));
  -
  -and then transform the various directives into appropriate callbacks
  -into the facility:
  -
  -	$output .= $stash->get('x');
  -	$output .= $view->process('header');
  -
  -The context becomes a switching centre for the Template Toolkit, with
  -most, if not all of its existing functionality moved out to
  -facilities.  The context should acquire all facilities at the start of
  -a process lifecycle, run the template, and then release them all
  -again.  This should all be done according to the process contract
  -which specifies which facilities should be installed, which can be
  -modified, what can and can't be be loaded, and so on.  The
  -contract would also define things like PRE_PROCESS templates, error 
  -handling, etc.
  -
  -Thus the role of Template::Service is to undertake a contract with the
  -client and attempt to fulfill it.  A Template::Contract defines the
  -terms of the contract and the Template::Context becomes an embodiment
  -(runtime instance) of a contract.
  -
  -The current context would be available as the 'tt2' template variable,
  -with facilities available as object methods.  Thus, the following become
  -possible:
  -
  -    [% tt2.stash.get('foo') %]		# [% foo %]
  -    [% tt2.view.process('header') %]	# [% PROCESS header %]
  -    [% tt2.parser.start_tag %]		# can't do this currently
  -
  -Directives would be re-written into code like that above.  You can 
  -use the 'tt2.facility.whatever' form when directive syntax would 
  -otherwise get in the way:
  -
  -    [% mycode( header = tt2.view.process('my/fancy/header'),
  -	       footer = tt2.view.process('your/dull/footer') ) %]
  -
  -Or to explicitly disambiguate:
  -
  -    [% tt2.stash.get('foo.size') %]	# object method
  -    [% tt2.stash.list.size(foo) %]	# virtual method
  -    [% foo.size %]			# lucky dip  :-)
  -
  -Facility management would itself be a facility.  Thus, to disable runtime
  -facility loading, you would simply unload (or not load) the facility
  -management facility.
  -
  -    [% tt2.facility.install(module='my_facility', name='foo') %]
  -    [% tt2.foo.bar(123) %]
  -
  -Note that there are some issues relating to cross-cutting facilities,
  -otherwise known as "aspects" (see Aspect Oriented Programming).  For
  -example, variable localisation cross cuts views and data management
  -(i.e. tt2.view.include('header', title='my title') must first localise
  -the stash and delocalise it again afterwards).  It may be appropriate
  -to install aspects as separate entities (e.g. 'localisation') which
  -can be invoked to apply cross cutting concerns in a generic way.
  -Perhaps aspects are implemented as their own facility?
  -
  -    [% tt2.aspect.localise %] ... [% tt2.aspect.delocalise %]
  -or
  -    [% aspect = tt2.aspect.localise %]   # cloned & specialised context
  -    [% aspect.view.process('header', title='my title') %]
  -or
  -    ...
  -
  -Another example would be debugging:
  -
  -    [% tt2dbg = tt2.aspect.debug(...params...) %]
  -    [% tt2dbg.view.process('header') %]
  -or:
  -    [% tt2 = tt2.aspect.debug(...) %]
  -	...
  -    [% tt2 = tt2.release %]
  -
  -
  -#------------------------------------------------------------------------
  -# Output
  -#------------------------------------------------------------------------
  -
  -It should be possible to stack output buffers.  In other words, you 
  -stop writing to the current output buffer and open a new buffer and
  -start writing to that.  The final output is simply the concatenation
  -of all output buffers.  
  -
  -The clever part of all this is that is should be possible to keep a
  -handle on an earlier buffer and go back and append to it at some point 
  -in the future.  A typical use is for generating tables of contents at
  -the start of a document when you don't know in advance what the document
  -contains.  Simply push a new output buffer at the point of the TOC, 
  -generate the rest of the document (keeping track of all the section 
  -titles, etc) and at the end of the document, go back and generate the 
  -TOC onto the end of the first buffer.
  -
  -Haven't decided on any syntax yet, but it will almost certainly be 
  -implemented as a facility.  At the lowest level, something like 
  -this perhaps:
  -
  -    [% INCLUDE header %]	  # write content to first buffer
  -
  -    [% toc = tt2.output.push %]   # save current buffer as toc
  -
  -    Blah blah blah		  # write content to second buffer
  -
  -    [% INCLUDE footer %] 
  -
  -    [% tt2.output.buffer = toc %] # re-instate first buffer
  -
  -    This is the TOC		  # append to first buffer
  -
  -The output stack would look something like this:
  -
  -    +-----------------+
  -    | <header>        |
  -    | This is the TOC |
  -    +-----------------+
  -             |
  -             V
  -    +-----------------+
  -    | Blah blah blah  |
  -    | <footer>        |
  -    +-----------------+
  -
  -Which to the end user, would silently be concatenated into:
  -
  -    <header>
  -    This is the TOC
  -    Blah blah blah
  -    <footer>
  -
  -Another use is to ensure dependencies on other templates get resolved.
  -For example, many of the PostScript library templates rely on other
  -templates.  At present, each template sets a global variable to
  -say "I've been loaded" while also inspecting these variables for any
  -templates that it relies on, loading them via INCLUDE/PROCESS if not
  -set.  e.g. ps/cross:
  -
  -    [%  # this works, but it's a bit clunky 
  -        DEFAULT radius = '5 mm';
  -        PROCESS ps/mm UNLESS global.ps.loaded.mm;
  -        global.ps.loaded.cross = 1;
  -    -%]
  -    /cross {
  -	...
  -    }
  -
  -Better would be to have each template simply activate the flags for
  -those templates that it relies on.  The header file pushes a new output
  -buffer and the footer file goes back to the header buffer and INCLUDEs
  -the dependant templates.  
  -
  -    [% PROCESS ps/header + ps/complex %]
  -
  -    10 mm 10 mm complex
  -
  -    [% PROCESS ps/footer %]
  -
  -ps/complex:
  -
  -    [% global.ps.require.simple = 1 %]
  -    /complex {
  -	...
  -	simple
  -	...
  -    }
  -
  -ps/simple:
  -
  -    [% global.ps.require.mm = 1 %]
  -    /simple {
  -	...
  -        31 mm 41 mm moveto 
  -        ...
  -    }
  -
  -ps/header:
  -
  -    %%!PS-Adobe-3.0
  -    ...
  -    %%EndComments
  -
  -    [% global.ps.header = tt2.output.push %]
  -
  -ps/footer:
  -
  -    [%  FOREACH file = ['mm','simple',...];
  -	    INCLUDE $file IF global.ps.require.$file;
  -	END;
  -    %]
  -
  -Ultimately, the whole ps library would become a facility.  The 
  -acquire() method (called by the Template::Service to acquire the 
  -facility at the start of processing a template) would do the 'header'
  -part (i.e. push the output buffer), and the release() method (called
  -at the tail end to release the facility) would do the dependency 
  -checks.  The dependency registrations would be facility features, 
  -e.g.
  -
  -gs/complex:
  -
  -    [% tt2.ps.require.mm = 1 %]		    # either
  -    [% tt2.ps.require('mm', 'simple')  %]   # or
  -
  -
  -
  -
  -------------------------------------------------------------------------