]> git.vpit.fr Git - perl/modules/Scope-Context.git/blobdiff - README
This is 0.03
[perl/modules/Scope-Context.git] / README
diff --git a/README b/README
index 3f96b7f6e0085079365a3eb0821442f94c8bb338..991e320e51b8b97a4ee84a40f19f889398b2562e 100644 (file)
--- a/README
+++ b/README
@@ -3,7 +3,7 @@ NAME
     upper scope frames.
 
 VERSION
-    Version 0.02
+    Version 0.03
 
 SYNOPSIS
         use Scope::Context;
@@ -11,32 +11,33 @@ SYNOPSIS
         for (1 .. 5) {
          sub {
           eval {
-           # Create Scope::Context objects for different upper frames.
-           my ($block, $sub, $eval, $loop);
+           # Create Scope::Context objects for different upper frames :
+           my ($block, $eval, $sub, $loop);
            {
             $block = Scope::Context->new;
-            $sub   = $block->sub;    # = $block->up
-            $eval  = $block->eval;   # = $block->up(2)
-            $loop  = $eval->up;      # = $block->up(3)
+            $eval  = $block->eval;   # == $block->up
+            $sub   = $block->sub;    # == $block->up(2)
+            $loop  = $sub->up;       # == $block->up(3)
            }
 
            eval {
-            # This will throw an exception, since $block has expired.
+            # This throws an exception, since $block has expired :
             $block->localize('$x' => 1);
            };
 
-           # This prints "hello" when the eval block above ends.
+           # This will print "hello" when the current eval block ends :
            $eval->reap(sub { print "hello\n" });
 
-           # Ignore $SIG{__DIE__} just for the loop body.
-           $loop->localize_delete('%SIG', '__DIE__');
+           # Ignore warnings just for the loop body :
+           $loop->localize_elem('%SIG', __WARN__ => sub { });
 
-           # Execute the callback as if it ran in place of the sub.
+           # Execute the callback as if it ran in place of the sub :
            my @values = $sub->uplevel(sub {
             return @_, 2;
            }, 1);
+           # @values now contains (1, 2).
 
-           # Immediately return (1, 2, 3) from the sub, bypassing the eval.
+           # Immediately return (1, 2, 3) from the sub, bypassing the eval :
            $sub->unwind(@values, 3);
 
            # Not reached.
@@ -45,10 +46,13 @@ SYNOPSIS
           # Not reached.
          }->();
 
-         # unwind() returns here. "hello\n" was printed, and now
-         # $SIG{__DIE__} is undefined.
+         # unwind() returns here. "hello\n" was printed, and now warnings are
+         # ignored.
         }
 
+        # $SIG{__WARN__} has been restored to its original value, warnings are no
+        # longer ignored.
+
 DESCRIPTION
     This class provides an object-oriented interface to Scope::Upper's
     functionalities. A Scope::Context object represents a currently active
@@ -146,7 +150,8 @@ METHODS
   "gimme"
         $cxt->gimme;
 
-    Returns the context (in the sense of "wantarray" in perlfunc) in which
+    Returns the context (in the sense of "perlfunc/wantarray" : "undef" for
+    void context, '' for scalar context, and true for list context) in which
     the scope denoted by the invocant is executed.
 
   "eval_text"
@@ -184,9 +189,9 @@ METHODS
   "want"
         my $want = $cxt->want;
 
-    Returns the Perl context (in the sense of "wantarray" : "undef" for void
-    context, '' for scalar context, and true for list context) in which is
-    executed the scope pointed by the invocant.
+    Returns the Perl context (in the sense of "perlfunc/wantarray") in which
+    is executed the closest subroutine, eval or format enclosing the scope
+    pointed by the invocant.
 
   "up"
         my $up_cxt = $cxt->up;
@@ -205,7 +210,7 @@ METHODS
         sub {
          {
           {
-           my $up = Scope::Context->new->up(2); # = Scope::Context->up(2)
+           my $up = Scope::Context->new->up(2); # == Scope::Context->up(2)
            # $up points two contextes above this one, which is the sub.
           }
          }
@@ -216,7 +221,7 @@ METHODS
         my $sub_cxt = $cxt->sub($frames);
         my $sub_cxt = Scope::Context->sub;
 
-    Returns a new Scope::Context object pointing to the $frames-th
+    Returns a new Scope::Context object pointing to the "$frames + 1"-th
     subroutine scope above the scope pointed by the invocant.
 
     This method can also be invoked as a class method, in which case it is
@@ -233,7 +238,7 @@ METHODS
         }
 
         sub inner {
-         my $sub = Scope::Context->new->sub(1); # = Scope::Context->sub(1)
+         my $sub = Scope::Context->new->sub(1); # == Scope::Context->sub(1)
          # $sub points to the context for the outer() sub.
         }
 
@@ -242,8 +247,8 @@ METHODS
         my $eval_cxt = $cxt->eval($frames);
         my $eval_cxt = Scope::Context->eval;
 
-    Returns a new Scope::Context object pointing to the $frames-th "eval"
-    scope above the scope pointed by the invocant.
+    Returns a new Scope::Context object pointing to the "$frames + 1"-th
+    "eval" scope above the scope pointed by the invocant.
 
     This method can also be invoked as a class method, in which case it is
     equivalent to calling "eval" on a Scope::Context object for the current
@@ -254,7 +259,7 @@ METHODS
 
         eval {
          sub {
-          my $eval = Scope::Context->new->eval; # = Scope::Context->eval
+          my $eval = Scope::Context->new->eval; # == Scope::Context->eval
           # $eval points to the eval context.
          }->()
         }
@@ -262,31 +267,34 @@ METHODS
   "reap"
         $cxt->reap($code);
 
-    Execute $code when the scope pointed by the invocant ends.
+    Executes $code when the scope pointed by the invocant ends.
 
     See "reap" in Scope::Upper for details.
 
   "localize"
         $cxt->localize($what, $value);
 
-    Localize the variable described by $what to the value $value when the
-    control flow returns to the scope pointed by the invocant.
+    Localizes the variable described by $what to the value $value when the
+    control flow returns to the scope pointed by the invocant, until said
+    scope ends.
 
     See "localize" in Scope::Upper for details.
 
   "localize_elem"
         $cxt->localize_elem($what, $key, $value);
 
-    Localize the element $key of the variable $what to the value $value when
-    the control flow returns to the scope pointed by the invocant.
+    Localizes the element $key of the variable $what to the value $value
+    when the control flow returns to the scope pointed by the invocant,
+    until said scope ends.
 
     See "localize_elem" in Scope::Upper for details.
 
   "localize_delete"
         $cxt->localize_delete($what, $key);
 
-    Delete the element $key from the variable $what when the control flow
-    returns to the scope pointed by the invocant.
+    Deletes the element $key from the variable $what when the control flow
+    returns to the scope pointed by the invocant, and restores it to its
+    original value when said scope ends.
 
     See "localize_delete" in Scope::Upper for details.
 
@@ -318,7 +326,8 @@ METHODS
     See "uplevel" in Scope::Upper for details.
 
 DEPENDENCIES
-    Carp (core module since perl 5), Scalar::Util (since 5.7.3).
+    Carp (core module since perl 5), overload (since 5.2.0), Scalar::Util
+    (since 5.7.3).
 
     Scope::Upper 0.21.
 
@@ -345,7 +354,7 @@ SUPPORT
         perldoc Scope::Context
 
 COPYRIGHT & LICENSE
-    Copyright 2011,2012,2013 Vincent Pit, all rights reserved.
+    Copyright 2011,2012,2013,2015 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.