Mouse::Util::does_role() respects $thing->does() method
[gitmo/Mouse.git] / lib / Mouse.pm
index b58ffb9..fdd51cf 100644 (file)
@@ -3,10 +3,10 @@ use 5.006_002;
 
 use Mouse::Exporter; # enables strict and warnings
 
-our $VERSION = '0.53';
+our $VERSION = '0.95';
 
-use Carp         qw(confess);
-use Scalar::Util qw(blessed);
+use Carp         ();
+use Scalar::Util ();
 
 use Mouse::Util ();
 
@@ -48,13 +48,8 @@ sub has {
     $meta->throw_error(q{Usage: has 'name' => ( key => value, ... )})
         if @_ % 2; # odd number of arguments
 
-    if(ref $name){ # has [qw(foo bar)] => (...)
-        for (@{$name}){
-            $meta->add_attribute($_ => @_);
-        }
-    }
-    else{ # has foo => (...)
-        $meta->add_attribute($name => @_);
+    for my $n(ref($name) ? @{$name} : $name){
+        $meta->add_attribute($n => @_);
     }
     return;
 }
@@ -130,7 +125,7 @@ sub init_meta {
     my %args = @_;
 
     my $class = $args{for_class}
-                    or confess("Cannot call init_meta without specifying a for_class");
+        or confess("Cannot call init_meta without specifying a for_class");
 
     my $base_class = $args{base_class} || 'Mouse::Object';
     my $metaclass  = $args{metaclass}  || 'Mouse::Meta::Class';
@@ -160,7 +155,7 @@ Mouse - Moose minus the antlers
 
 =head1 VERSION
 
-This document describes Mouse version 0.53
+This document describes Mouse version 0.95
 
 =head1 SYNOPSIS
 
@@ -195,30 +190,31 @@ This document describes Mouse version 0.53
 
 =head1 DESCRIPTION
 
-L<Moose> is wonderful. B<Use Moose instead of Mouse.>
+L<Moose|Moose> is a postmodern object system for Perl5. Moose is wonderful.
 
 Unfortunately, Moose has a compile-time penalty. Though significant progress
 has been made over the years, the compile time penalty is a non-starter for
 some very specific applications. If you are writing a command-line application
 or CGI script where startup time is essential, you may not be able to use
-Moose. We recommend that you instead use L<HTTP::Engine> and FastCGI for the
-latter, if possible.
+Moose (we recommend that you instead use persistent Perl executing environments
+like C<FastCGI> for the latter, if possible).
 
-Mouse aims to alleviate this by providing a subset of Moose's functionality,
-faster.
+Mouse is a Moose compatible object system, which aims to alleviate this penalty
+by providing a subset of Moose's functionality.
 
 We're also going as light on dependencies as possible. Mouse currently has
-B<no dependencies> except for testing modules.
+B<no dependencies> except for building/testing modules. Mouse also works
+without XS, although it has an XS backend to make it much faster.
 
-=head2 MOOSE COMPATIBILITY
+=head2 Moose Compatibility
 
 Compatibility with Moose has been the utmost concern. The sugary interface is
 highly compatible with Moose. Even the error messages are taken from Moose.
-The Mouse code just runs the test suite 4x faster.
+The Mouse code just runs its test suite 4x faster.
 
 The idea is that, if you need the extra power, you should be able to run
 C<s/Mouse/Moose/g> on your codebase and have nothing break. To that end,
-we have written L<Any::Moose> which will act as Mouse unless Moose is loaded,
+we have written L<Any::Moose|Any::Moose> which will act as Mouse unless Moose is loaded,
 in which case it will act as Moose. Since Mouse is a little sloppier than
 Moose, if you run into weird errors, it would be worth running:
 
@@ -229,7 +225,7 @@ also better.
 
 See also L<Mouse::Spec> for compatibility and incompatibility with Moose.
 
-=head2 MouseX
+=head2 Mouse Extentions
 
 Please don't copy MooseX code to MouseX. If you need extensions, you really
 should upgrade to Moose. We don't need two parallel sets of extensions!
@@ -351,7 +347,7 @@ Use of this feature requires L<Scalar::Util>!
 
 =item C<< trigger => CodeRef >>
 
-Any time the attribute's value is set (either through the accessor or the constructor), the trigger is called on it. The trigger receives as arguments the instance, the new value, and the attribute instance.
+Any time the attribute's value is set (either through the accessor or the constructor), the trigger is called on it. The trigger receives as arguments the instance, and the new value.
 
 =item C<< builder => Str >>
 
@@ -412,6 +408,8 @@ Perl 5.6.2 or later.
 
 =head1 SEE ALSO
 
+L<Mouse::Role>
+
 L<Mouse::Spec>
 
 L<Moose>