Mooseing around;
Stevan Little [Fri, 23 Nov 2007 17:48:07 +0000 (17:48 +0000)]
Changes
README
lib/Moose/Util/TypeConstraints.pm

diff --git a/Changes b/Changes
index caa9e8d..fcbdf40 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,6 @@
 Revision history for Perl extension Moose
 
+0.30
     * Moose::Meta::Method::Constructor
       -builder related bug in inlined constructor. (groditi)
 
@@ -8,7 +9,7 @@ Revision history for Perl extension Moose
         code generation for runtime speed (groditi)
 
     * Moose::Util::TypeConstraints
-      - fix ClassName constraint to introspect symbol table
+      - fix ClassName constraint to introspect symbol table (mst)
 
     * t/ 
       - New tests for builder bug. Upon instantiation, if an
diff --git a/README b/README
index cca8e3b..d39ad82 100644 (file)
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-Moose version 0.27
+Moose version 0.30
 ===========================
 
 See the individual module documentation for more information
index 44690df..149c81b 100644 (file)
@@ -409,63 +409,39 @@ subtype 'Role'
     => where { $_->can('does') }
     => optimize_as { blessed($_[0]) && $_[0]->can('does') };
 
+my $_class_name_checker = sub {
+    return if ref($_[0]);
+    return unless defined($_[0]) && length($_[0]);
+
+    # walk the symbol table tree to avoid autovififying
+    # \*{${main::}{"Foo::"}} == \*main::Foo::
+
+    my $pack = \*::;
+    foreach my $part (split('::', $_[0])) {
+        return unless exists ${$$pack}{"${part}::"};
+        $pack = \*{${$$pack}{"${part}::"}};
+    }
+
+    # check for $VERSION or @ISA
+    return 1 if exists ${$$pack}{VERSION}
+             && defined *{${$$pack}{VERSION}}{SCALAR};
+    return 1 if exists ${$$pack}{ISA}
+             && defined *{${$$pack}{ISA}}{ARRAY};
+
+    # check for any method
+    foreach ( keys %{$$pack} ) {
+        next if substr($_, -2, 2) eq '::';
+        return 1 if defined *{${$$pack}{$_}}{CODE};
+    }
+
+    # fail
+    return;
+};
+
 subtype 'ClassName'
     => as 'Str'
-    => where {
-         return unless defined($_) && length($_);
-
-         # walk the symbol table tree to avoid autovififying
-         # \*{${main::}{"Foo::"}} == \*main::Foo::
-
-         my $pack = \*::;
-         foreach my $part (split('::', $_)) {
-           return unless exists ${$$pack}{"${part}::"};
-           $pack = \*{${$$pack}{"${part}::"}};
-         }
-
-         # check for $VERSION or @ISA
-         return 1 if exists ${$$pack}{VERSION}
-                     && defined *{${$$pack}{VERSION}}{SCALAR};
-         return 1 if exists ${$$pack}{ISA}
-                     && defined *{${$$pack}{ISA}}{ARRAY};
-
-         # check for any method
-         foreach ( keys %{$$pack} ) {
-           next if substr($_, -2, 2) eq '::';
-           return 1 if defined *{${$$pack}{$_}}{CODE};
-         }
-
-         # fail
-         return;
-       }
-    => optimize_as {
-         return if ref($_[0]);
-         return unless defined($_[0]) && length($_[0]);
-
-         # walk the symbol table tree to avoid autovififying
-         # \*{${main::}{"Foo::"}} == \*main::Foo::
-
-         my $pack = \*::;
-         foreach my $part (split('::', $_[0])) {
-           return unless exists ${$$pack}{"${part}::"};
-           $pack = \*{${$$pack}{"${part}::"}};
-         }
-
-         # check for $VERSION or @ISA
-         return 1 if exists ${$$pack}{VERSION}
-                     && defined *{${$$pack}{VERSION}}{SCALAR};
-         return 1 if exists ${$$pack}{ISA}
-                     && defined *{${$$pack}{ISA}}{ARRAY};
-
-         # check for any method
-         foreach ( keys %{$$pack} ) {
-           next if substr($_, -2, 2) eq '::';
-           return 1 if defined *{${$$pack}{$_}}{CODE};
-         }
-
-         # fail
-         return;
-       };
+    => $_class_name_checker # where ...
+    => { optimize => $_class_name_checker };
 
 ## --------------------------------------------------------
 # end of built-in types ...