cvsuser     05/09/27 09:53:23

  Modified:    App-Context/lib App.pm
  Log:
  trace and debug scopes can now be exclusive (i.e. 
--trace=!App::Context,App::Context::Cmd)
  
  Revision  Changes    Path
  1.16      +29 -11    p5ee/App-Context/lib/App.pm
  
  Index: App.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Context/lib/App.pm,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- App.pm    5 Apr 2005 18:51:41 -0000       1.15
  +++ App.pm    27 Sep 2005 16:53:23 -0000      1.16
  @@ -248,15 +248,17 @@
   
   =head2 Global Variables
   
  - * Global Variable: %App::scope       scope for debug or tracing output
  - * Global Variable: %App::trace       trace level
  - * Global Variable: $App::DEBUG       debug level
  - * Global Variable: $App::DEBUG_FILE  file for debug output
  + * Global Variable: %App::scope              scope for debug or tracing 
output
  + * Global Variable: $App::scope_exclusive    flag saying that the scope is 
exclusive (a list of things *not* to debug/trace)
  + * Global Variable: %App::trace              trace level
  + * Global Variable: $App::DEBUG              debug level
  + * Global Variable: $App::DEBUG_FILE         file for debug output
   
   =cut
   
   if (!defined $App::DEBUG) {
       %App::scope = ();
  +    $App::scope_exclusive = 0;
       $App::trace = 0;
       $App::DEBUG = 0;
       $App::DEBUG_FILE = "";
  @@ -267,11 +269,16 @@
   #################################################################
   
   # Supports the following command-line usage:
  -#    -debug=1                                      (global debug)
  -#    -debug=9                                      (detail debug)
  -#    -scope=App::Context                       (debug class only)
  -#    -scope=App::Context,App::Session          (multiple classes)
  -#    -scope=App::Repository::DBI.select_rows     (indiv. methods)
  +#    --debug=1                                     (global debug)
  +#    --debug=9                                     (detail debug)
  +#    --scope=App::Context                      (debug class only)
  +#    --scope=!App::Context             (debug all but this class)
  +#    --scope=App::Context,App::Session         (multiple classes)
  +#    --scope=App::Repository::DBI.select_rows    (indiv. methods)
  +#    --trace=App::Context                      (trace class only)
  +#    --trace=!App::Context             (trace all but this class)
  +#    --trace=App::Context,App::Session         (multiple classes)
  +#    --trace=App::Repository::DBI.select_rows    (indiv. methods)
   {
       my $scope = $App::options{scope} || "";
   
  @@ -304,6 +311,10 @@
           $scope .= $debug;
       }
   
  +    if ($scope =~ s/^!//) {
  +        $App::scope_exclusive = 1;
  +    }
  +
       if (defined $scope && $scope ne "") {
           foreach my $pkg (split(/,/,$scope)) {
               $App::scope{$pkg} = 1;
  @@ -757,7 +768,14 @@
               }
           }
   
  -        return if (%App::scope && !$App::scope{$package} && 
!$App::scope{"$package.$sub"});
  +        if (%App::scope) {
  +            if ($App::scope_exclusive) {
  +                return if ($App::scope{$package} || 
$App::scope{"$package.$sub"});
  +            }
  +            else {
  +                return if (!$App::scope{$package} && 
!$App::scope{"$package.$sub"});
  +            }
  +        }
   
           if ($method) {
               if (ref($obj)) {  # dynamic method, called on an object
  
  
  

Reply via email to