[Templates-cvs] cvs commit: Template2/lib/Template Stash.pm

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


cvs         06/01/30 16:57:13

  Modified:    lib/Template Stash.pm
  Log:
  * changed sort and nsort to always return references to lists
  
  Revision  Changes    Path
  2.92      +10 -6     Template2/lib/Template/Stash.pm
  
  Index: Stash.pm
  ===================================================================
  RCS file: /template-toolkit/Template2/lib/Template/Stash.pm,v
  retrieving revision 2.91
  retrieving revision 2.92
  diff -u -r2.91 -r2.92
  --- Stash.pm	2006/01/30 14:50:35	2.91
  +++ Stash.pm	2006/01/30 16:57:12	2.92
  @@ -18,7 +18,7 @@
   #
   #----------------------------------------------------------------------------
   #
  -# $Id: Stash.pm,v 2.91 2006/01/30 14:50:35 abw Exp $
  +# $Id: Stash.pm,v 2.92 2006/01/30 16:57:12 abw Exp $
   #
   #============================================================================
   
  @@ -29,7 +29,7 @@
   use strict;
   use vars qw( $VERSION $DEBUG $ROOT_OPS $SCALAR_OPS $HASH_OPS $LIST_OPS );
   
  -$VERSION = sprintf("%d.%02d", q$Revision: 2.91 $ =~ /(\d+)\.(\d+)/);
  +$VERSION = sprintf("%d.%02d", q$Revision: 2.92 $ =~ /(\d+)\.(\d+)/);
   
   
   #========================================================================
  @@ -216,7 +216,8 @@
           $^W = 0;
           my ($list, $field) = @_;
           return $list unless @$list > 1;     # no need to sort 1 item lists
  -        return $field                       # Schwartzian Transform 
  +        return [
  +            $field                          # Schwartzian Transform 
               ?  map  { $_->[0] }             # for case insensitivity
                  sort { $a->[1] cmp $b->[1] }
                  map  { [ $_, lc(ref($_) eq 'HASH' 
  @@ -227,12 +228,14 @@
               :  map  { $_->[0] }
                  sort { $a->[1] cmp $b->[1] }
                  map  { [ $_, lc $_ ] } 
  -               @$list
  +               @$list,
  +       ];
      },
      'nsort'    => sub {
           my ($list, $field) = @_;
           return $list unless @$list > 1;     # no need to sort 1 item lists
  -        return $field                       # Schwartzian Transform 
  +        return [ 
  +            $field                          # Schwartzian Transform 
               ?  map  { $_->[0] }             # for case insensitivity
                  sort { $a->[1] <=> $b->[1] }
                  map  { [ $_, lc(ref($_) eq 'HASH' 
  @@ -243,7 +246,8 @@
               :  map  { $_->[0] }
                  sort { $a->[1] <=> $b->[1] }
                  map  { [ $_, lc $_ ] } 
  -               @$list
  +               @$list,
  +        ];
       },
       'unique'  => sub { my %u; [ grep { ++$u{$_} == 1 } @{$_[0]} ] },
       'merge'   => sub {