From: Vincent Pit Date: Sat, 1 Sep 2012 13:25:22 +0000 (+0200) Subject: This is 0.19 X-Git-Tag: v0.19^0 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FScope-Upper.git;a=commitdiff_plain;h=b143b5ed4d9b116054d12ea0696167b6a199b500 This is 0.19 --- diff --git a/Changes b/Changes index 6a27bd6..6a96951 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,13 @@ Revision history for Scope-Upper +0.19 2012-09-01 13:25 UTC + + Doc : POD headings have been made linkable. + + Fix : Building with perl 5.17.4. + + Fix : BUILD_PREREQS are now set for ExtUtils::MakeMaker. + + Opt : uplevel() private data structure is 7% smaller on 64 bits + architectures. + + Tst : Author tests overhaul. + 0.18 2011-10-10 20:50 UTC + Add : The uid() function returns an unique identifier for each dynamic scope. The validate_uid() function can be used to check whether diff --git a/META.json b/META.json index d32dc6e..544e4ce 100644 --- a/META.json +++ b/META.json @@ -4,7 +4,7 @@ "Vincent Pit " ], "dynamic_config" : 1, - "generated_by" : "ExtUtils::MakeMaker version 6.59, CPAN::Meta::Converter version 2.112621", + "generated_by" : "ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120921", "license" : [ "perl_5" ], @@ -22,24 +22,24 @@ "prereqs" : { "build" : { "requires" : { - "Exporter" : 0, - "ExtUtils::MakeMaker" : 0, - "Test::More" : 0, - "XSLoader" : 0, - "base" : 0 + "Exporter" : "0", + "ExtUtils::MakeMaker" : "0", + "Test::More" : "0", + "XSLoader" : "0", + "base" : "0" } }, "configure" : { "requires" : { - "Config" : 0, - "ExtUtils::MakeMaker" : 0 + "Config" : "0", + "ExtUtils::MakeMaker" : "0" } }, "runtime" : { "requires" : { - "Exporter" : 0, - "XSLoader" : 0, - "base" : 0, + "Exporter" : "0", + "XSLoader" : "0", + "base" : "0", "perl" : "5.006" } } @@ -57,5 +57,5 @@ "url" : "http://git.profvince.com/?p=perl%2Fmodules%2FScope-Upper.git" } }, - "version" : "0.18" + "version" : "0.19" } diff --git a/META.yml b/META.yml index 80f4c8d..572d374 100644 --- a/META.yml +++ b/META.yml @@ -12,7 +12,7 @@ configure_requires: Config: 0 ExtUtils::MakeMaker: 0 dynamic_config: 1 -generated_by: 'ExtUtils::MakeMaker version 6.59, CPAN::Meta::Converter version 2.112621' +generated_by: 'ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120921' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -32,4 +32,4 @@ resources: homepage: http://search.cpan.org/dist/Scope-Upper/ license: http://dev.perl.org/licenses/ repository: http://git.profvince.com/?p=perl%2Fmodules%2FScope-Upper.git -version: 0.18 +version: 0.19 diff --git a/README b/README index 7d441b7..e09bd12 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ NAME Scope::Upper - Act on upper scopes. VERSION - Version 0.18 + Version 0.19 SYNOPSIS "reap", "localize", "localize_elem", "localize_delete" and "WORDS" : @@ -166,11 +166,18 @@ FUNCTIONS which means that you can safely store it at some point and use it when needed, and it will still denote the original scope. - "reap $callback, $context" + "reap" + reap { ... }; + reap { ... } $context; + &reap($callback, $context); + Adds a destructor that calls $callback (in void context) when the upper scope represented by $context ends. - "localize $what, $value, $context" + "localize" + localize $what, $value; + localize $what, $value, $context; + Introduces a "local" delayed to the time of first return into the upper scope denoted by $context. $what can be : @@ -223,7 +230,10 @@ FUNCTIONS implementation detail, this behaviour may change in the future if proved harmful. - "localize_elem $what, $key, $value, $context" + "localize_elem" + localize_elem $what, $key, $value; + localize_elem $what, $key, $value, $context; + Introduces a "local $what[$key] = $value" or "local $what{$key} = $value" delayed to the time of first return into the upper scope denoted by $context. Unlike "localize", $what must be a string and the type of @@ -252,7 +262,10 @@ FUNCTIONS in the upper scope. It's actually more powerful, as &func won't even "exists" anymore. $key is ignored. - "unwind @values, $context" + "unwind" + unwind @values; + unwind @values, $context; + Returns @values *from* the context pointed by $context, i.e. from the subroutine, eval or format at or just above $context, and immediately restart the program flow at this point - thus effectively returning to @@ -269,7 +282,10 @@ FUNCTIONS will set $num to 'z'. You can use "want_at" to handle these cases. - "want_at $context" + "want_at" + my $want = want_at; + my $want = want_at $context; + Like "wantarray", but for the subroutine/eval/format at or just above $context. @@ -284,6 +300,11 @@ FUNCTIONS will rightfully set $num to 26. "uplevel $code, @args, $context" + my @ret = uplevel { ...; return @ret }; + my @ret = uplevel { my @args = @_; ...; return @ret } @args; + my @ret = uplevel { ... } @args, $context; + my @ret = &uplevel($callback, @args, $context); + Executes the code reference $code with arguments @args as if it were located at the subroutine stack frame pointed by $context, effectively fooling "caller" and "die" into believing that the call actually @@ -352,7 +373,10 @@ FUNCTIONS Albeit the three exceptions listed above, it passes all the tests of Sub::Uplevel. - "uid $context" + "uid" + my $uid = uid; + my $uid = uid $context; + Returns an unique identifier (UID) for the context (or dynamic scope) pointed by $context, or for the current context if $context is omitted. This UID will only be valid for the life time of the context it @@ -401,7 +425,9 @@ FUNCTIONS To check whether a given UID is valid, you can use the "validate_uid" function. - "validate_uid $uid" + "validate_uid" + my $is_valid = validate_uid $uid; + Returns true if and only if $uid is the UID of a currently valid context (that is, it designates a scope that is higher than the current one in the call stack). @@ -431,23 +457,36 @@ CONSTANTS WORDS Constants "TOP" + my $top_context = TOP; + Returns the context that currently represents the highest scope. "HERE" + my $current_context = HERE; + The context of the current scope. Getting a context from a context For any of those functions, $from is expected to be a context. When omitted, it defaults to the the current context. - "UP $from" + "UP" + my $upper_context = UP; + my $upper_context = UP $from; + The context of the scope just above $from. - "SUB $from" + "SUB" + my $sub_context = SUB; + my $sub_context = SUB $from; + The context of the closest subroutine above $from. Note that $from is returned if it is already a subroutine context ; hence "SUB SUB == SUB". - "EVAL $from" + "EVAL" + my $eval_context = EVAL; + my $eval_context = EVAL $from; + The context of the closest eval above $from. Note that $from is returned if it is already an eval context ; hence "EVAL EVAL == EVAL". @@ -456,10 +495,16 @@ WORDS When omitted, it defaults to 0 and those functions return the same context as "HERE". - "SCOPE $level" + "SCOPE" + my $context = SCOPE; + my $context = SCOPE $level; + The $level-th upper context, regardless of its type. - "CALLER $level" + "CALLER" + my $context = CALLER; + my $context = CALLER $level; + The context of the $level-th upper subroutine/eval/format. It kind of corresponds to the context represented by "caller $level", but while e.g. "caller 0" refers to the caller context, "CALLER 0" will refer to @@ -636,7 +681,7 @@ ACKNOWLEDGEMENTS Thanks to Shawn M. Moore for motivation. COPYRIGHT & LICENSE - Copyright 2008,2009,2010,2011 Vincent Pit, all rights reserved. + Copyright 2008,2009,2010,2011,2012 Vincent Pit, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. diff --git a/lib/Scope/Upper.pm b/lib/Scope/Upper.pm index 5460c83..1ae9f9c 100644 --- a/lib/Scope/Upper.pm +++ b/lib/Scope/Upper.pm @@ -9,13 +9,13 @@ Scope::Upper - Act on upper scopes. =head1 VERSION -Version 0.18 +Version 0.19 =cut our $VERSION; BEGIN { - $VERSION = '0.18'; + $VERSION = '0.19'; } =head1 SYNOPSIS