X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FMouse%2FUtil.pm;h=17d7efeaabc9a429f28b7ea161e886a0094298e5;hp=fc2292a46e8bb59b455eabbcf9d724d1958f5c2e;hb=31aa6299ca20515174f1b145e5b3d4dbd9e09a08;hpb=6336eb18ec59cf5c9c057624c7a1d15f449b00c6 diff --git a/lib/Mouse/Util.pm b/lib/Mouse/Util.pm index fc2292a..17d7efe 100644 --- a/lib/Mouse/Util.pm +++ b/lib/Mouse/Util.pm @@ -50,7 +50,7 @@ BEGIN{ }, ); - our $VERSION = '0.93'; + our $VERSION = '0.95'; my $xs = !(defined(&is_valid_class_name) || $ENV{MOUSE_PUREPERL} || $ENV{PERL_ONLY}); @@ -80,7 +80,8 @@ BEGIN{ # definition of mro::get_linear_isa() my $get_linear_isa; - if (eval { require mro }) { + if ($] >= 5.010_000) { + require mro; $get_linear_isa = \&mro::get_linear_isa; } else { @@ -168,7 +169,7 @@ sub find_meta{ return class_of( $_[0] ); } -sub does_role{ +sub _does_role_impl { my ($class_or_obj, $role_name) = @_; my $meta = class_of($class_or_obj); @@ -179,6 +180,16 @@ sub does_role{ return defined($meta) && $meta->does_role($role_name); } +sub does_role { + my($thing, $role_name) = @_; + + if( (Scalar::Util::blessed($thing) || is_class_loaded($thing)) + && $thing->can('does')) { + return $thing->does($role_name); + } + goto &_does_role_impl; +} + # taken from Mouse::Util (0.90) { my %cache; @@ -376,7 +387,7 @@ sub dump :method { # general does() method sub does :method { - goto &does_role; + goto &_does_role_impl; } 1; @@ -388,7 +399,7 @@ Mouse::Util - Utilities for working with Mouse classes =head1 VERSION -This document describes Mouse version 0.93 +This document describes Mouse version 0.95 =head1 SYNOPSIS