Version 0.11.
[p5sagit/namespace-clean.git] / README
diff --git a/README b/README
index 0548c31..6f2aca5 100644 (file)
--- a/README
+++ b/README
@@ -2,7 +2,7 @@ NAME
     namespace::clean - Keep imports and functions out of your namespace
 
 VERSION
-    0.07
+    0.11
 
 SYNOPSIS
       package Foo;
@@ -35,6 +35,7 @@ SYNOPSIS
       1;
 
 DESCRIPTION
+  Keeping packages clean
     When you define a function, or import one, into a Perl package, it will
     naturally also be available as a method. This does not per se cause
     problems, but it can complicate subclassing and, for example, plugin
@@ -59,6 +60,26 @@ DESCRIPTION
     If you just want to "-except" a single sub, you can pass it directly.
     For more than one value you have to use an array reference.
 
+  Explicitely removing functions when your scope is compiled
+    It is also possible to explicitely tell "namespace::clean" what packages
+    to remove when the surrounding scope has finished compiling. Here is an
+    example:
+
+      package Foo;
+      use strict;
+
+      # blessed NOT available
+
+      sub my_class {
+          use Scalar::Util qw( blessed );
+          use namespace::clean qw( blessed );
+
+          # blessed available
+          return blessed shift;
+      }
+
+      # blessed NOT available
+
   Moose
     When using "namespace::clean" together with Moose you want to keep the
     installed "meta" method. So your classes should look like:
@@ -70,13 +91,44 @@ DESCRIPTION
 
     Same goes for Moose::Role.
 
+  Cleaning other packages
+    You can tell "namespace::clean" that you want to clean up another
+    package instead of the one importing. To do this you have to pass in the
+    "-cleanee" option like this:
+
+      package My::MooseX::namespace::clean;
+      use strict;
+
+      use namespace::clean (); # no cleanup, just load
+
+      sub import {
+          namespace::clean->import(
+            -cleanee => scalar(caller),
+            -except  => 'meta',
+          );
+      }
+
+    If you don't care about "namespace::clean"s discover-and-"-except"
+    logic, and just want to remove subroutines, try "clean_subroutines".
+
 METHODS
     You shouldn't need to call any of these. Just "use" the package at the
     appropriate place.
 
+  clean_subroutines
+    This exposes the actual subroutine-removal logic.
+
+      namespace::clean->clean_subroutines($cleanee, qw( subA subB ));
+
+    will remove "subA" and "subB" from $cleanee. Note that this will remove
+    the subroutines immediately and not wait for scope end. If you want to
+    have this effect at a specific time (e.g. "namespace::clean" acts on
+    scope compile end) it is your responsibility to make sure it runs at
+    that time.
+
   import
     Makes a snapshot of the current defined functions and installs a
-    Scope::Guard in the current scope to invoke the cleanups.
+    B::Hooks::EndOfScope hook in the current scope to invoke the cleanups.
 
   unimport
     This method will be called when you do a
@@ -111,7 +163,7 @@ IMPLEMENTATION DETAILS
     use "undef" instead.
 
 SEE ALSO
-    Scope::Guard
+    B::Hooks::EndOfScope
 
 AUTHOR AND COPYRIGHT
     Robert 'phaylon' Sedlacek "<rs@474.at>", with many thanks to Matt S