From: Vincent Pit Date: Sun, 29 Jun 2008 15:52:07 +0000 (+0200) Subject: Importing Sub-Prototype-Util-0.03.tar.gz X-Git-Tag: v0.03^0 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FSub-Prototype-Util.git;a=commitdiff_plain;h=60e38805350346d06fe27a7dee61932e0da22413 Importing Sub-Prototype-Util-0.03.tar.gz --- diff --git a/Changes b/Changes index ea7744e..ecf455a 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,10 @@ Revision history for Sub-Prototype-Util +0.03 2008-04-06 22:20 UTC + + Fix : our doesn't exist in 5.005 (sigh). + + Fix : '_' prototype should use the current argument when it's + available and only resort to $_ when it's not. + 0.02 2008-04-06 16:40 UTC + Fix : Missing LICENSE in Makefile.PL. + Fix : Typos in POD. diff --git a/META.yml b/META.yml index def7458..4014ea5 100644 --- a/META.yml +++ b/META.yml @@ -1,6 +1,6 @@ --- #YAML:1.0 name: Sub-Prototype-Util -version: 0.02 +version: 0.03 abstract: Prototype-related utility routines. license: perl author: diff --git a/README b/README index 70525e9..2865eb1 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ NAME Sub::Prototype::Util - Prototype-related utility routines. VERSION - Version 0.02 + Version 0.03 SYNOPSIS use Sub::Prototype::Util qw/flatten recall/; diff --git a/lib/Sub/Prototype/Util.pm b/lib/Sub/Prototype/Util.pm index 661d03d..2e2a504 100644 --- a/lib/Sub/Prototype/Util.pm +++ b/lib/Sub/Prototype/Util.pm @@ -12,11 +12,13 @@ Sub::Prototype::Util - Prototype-related utility routines. =head1 VERSION -Version 0.02 +Version 0.03 =cut -our $VERSION = '0.02'; +use vars qw/$VERSION/; + +$VERSION = '0.03'; =head1 SYNOPSIS @@ -78,7 +80,7 @@ sub flatten { } elsif ($p =~ /[\@\%]/) { push @args, @_; last; - } elsif ($p eq '_') { + } elsif ($p eq '_' && @_ == 0) { push @args, $_; } else { push @args, shift; @@ -117,7 +119,7 @@ sub recall { last; } elsif ($p =~ /\&/) { push @args, 'sub{&{$a[' . $i . ']}}'; - } elsif ($p eq '_') { + } elsif ($p eq '_' && $i >= @a) { push @args, '$_'; } else { push @args, '$a[' . $i . ']'; diff --git a/t/10-flatten.t b/t/10-flatten.t index 05f56e7..8c23c3c 100644 --- a/t/10-flatten.t +++ b/t/10-flatten.t @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 26; +use Test::More tests => 27; use Sub::Prototype::Util qw/flatten/; @@ -40,9 +40,10 @@ my @tests = ( [ '\&$', 'coderef', [ \&main::hlagh, 1 ], [ 'HLAGH', 1 ] ], [ '\[$@%]', 'class got scalarref', [ \1 ], [ 1 ] ], [ '\[$@%]', 'class got arrayref', [ [ 1 ] ], [ 1 ] ], - [ '\[$@%]', 'class got hashref', [ { 1,2 } ], [ 1, 2 ] ] + [ '\[$@%]', 'class got hashref', [ { 1,2 } ], [ 1, 2 ] ], + [ '_', '_ with argument', [ 1, 2 ], [ 1 ] ] ); -my $l = [ '_', '$_', [ ] ]; +my $l = [ '_', '_ with no argument', [ ] ]; $l->[3] = [ $l ]; push @tests, $l; diff --git a/t/11-recall.t b/t/11-recall.t index 3e3c7a2..4925946 100644 --- a/t/11-recall.t +++ b/t/11-recall.t @@ -3,7 +3,7 @@ use strict; use warnings; -use Test::More tests => 3 + 12 + (($^V ge v5.10.0) ? 2 : 0); +use Test::More tests => 3 + 12 + (($^V ge v5.10.0) ? 4 : 0); use Scalar::Util qw/set_prototype/; use Sub::Prototype::Util qw/recall/; @@ -29,10 +29,15 @@ my @tests = ( [ 'main::mygrep1', 'grep1', $g, $g, [ 3 .. 5 ] ], [ 'main::mygrep2', 'grep2', $g, $g, [ 3 .. 5 ] ], ); -sub myit { push @{$_->[2]}, 1; return 2 }; +sub myit { push @{$_[0]->[2]}, 3; return 4 }; if ($^V ge v5.10.0) { set_prototype \&myit, '_'; - push @tests, [ 'main::myit', '_ prototype', [ ], [ 1 ], [ 2 ] ]; + push @tests, [ 'main::myit', '_ with argument', + [ [ 1, 2, [ ] ], 5 ], + [ [ 1, 2, [ 3 ] ], 5 ], + [ 4 ] + ]; + push @tests, [ 'main::myit', '_ with no argument', [ ], [ 3 ], [ 4 ] ]; } for (@tests) {