Updated Mo in all tools

This commit is contained in:
Brian Fraser fraserb@gmail.com
2012-10-31 12:21:47 -03:00
parent e6158cd2f8
commit e437ba9b3d
9 changed files with 63 additions and 54 deletions

View File

@@ -1104,14 +1104,15 @@ use strict;
use warnings qw( FATAL all ); use warnings qw( FATAL all );
use Carp (); use Carp ();
use Scalar::Util (); use Scalar::Util qw(looks_like_number blessed);
our %TYPES = ( our %TYPES = (
Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) },
Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, Num => sub { defined $_[0] && looks_like_number($_[0]) },
Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) },
Str => sub { defined $_[0] }, Str => sub { defined $_[0] },
Object => sub { defined $_[0] && &Scalar::Util::blessed }, Object => sub { defined $_[0] && blessed($_[0]) },
FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened },
map { map {
@@ -1285,7 +1286,7 @@ sub Mo::import {
$method = sub { $method = sub {
if ( $#_ ) { if ( $#_ ) {
Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">)
unless blessed($_[1]) && $_[1]->does($role) unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) }
} }
goto &$original_method goto &$original_method
}; };

View File

@@ -1101,14 +1101,15 @@ use strict;
use warnings qw( FATAL all ); use warnings qw( FATAL all );
use Carp (); use Carp ();
use Scalar::Util (); use Scalar::Util qw(looks_like_number blessed);
our %TYPES = ( our %TYPES = (
Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) },
Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, Num => sub { defined $_[0] && looks_like_number($_[0]) },
Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) },
Str => sub { defined $_[0] }, Str => sub { defined $_[0] },
Object => sub { defined $_[0] && &Scalar::Util::blessed }, Object => sub { defined $_[0] && blessed($_[0]) },
FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened },
map { map {
@@ -1282,7 +1283,7 @@ sub Mo::import {
$method = sub { $method = sub {
if ( $#_ ) { if ( $#_ ) {
Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">)
unless blessed($_[1]) && $_[1]->does($role) unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) }
} }
goto &$original_method goto &$original_method
}; };

View File

@@ -1108,14 +1108,15 @@ use strict;
use warnings qw( FATAL all ); use warnings qw( FATAL all );
use Carp (); use Carp ();
use Scalar::Util (); use Scalar::Util qw(looks_like_number blessed);
our %TYPES = ( our %TYPES = (
Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) },
Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, Num => sub { defined $_[0] && looks_like_number($_[0]) },
Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) },
Str => sub { defined $_[0] }, Str => sub { defined $_[0] },
Object => sub { defined $_[0] && &Scalar::Util::blessed }, Object => sub { defined $_[0] && blessed($_[0]) },
FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened },
map { map {
@@ -1289,7 +1290,7 @@ sub Mo::import {
$method = sub { $method = sub {
if ( $#_ ) { if ( $#_ ) {
Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">)
unless blessed($_[1]) && $_[1]->does($role) unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) }
} }
goto &$original_method goto &$original_method
}; };

View File

@@ -1114,14 +1114,15 @@ use strict;
use warnings qw( FATAL all ); use warnings qw( FATAL all );
use Carp (); use Carp ();
use Scalar::Util (); use Scalar::Util qw(looks_like_number blessed);
our %TYPES = ( our %TYPES = (
Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) },
Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, Num => sub { defined $_[0] && looks_like_number($_[0]) },
Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) },
Str => sub { defined $_[0] }, Str => sub { defined $_[0] },
Object => sub { defined $_[0] && &Scalar::Util::blessed }, Object => sub { defined $_[0] && blessed($_[0]) },
FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened },
map { map {
@@ -1295,7 +1296,7 @@ sub Mo::import {
$method = sub { $method = sub {
if ( $#_ ) { if ( $#_ ) {
Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">)
unless blessed($_[1]) && $_[1]->does($role) unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) }
} }
goto &$original_method goto &$original_method
}; };

View File

@@ -1101,14 +1101,15 @@ use strict;
use warnings qw( FATAL all ); use warnings qw( FATAL all );
use Carp (); use Carp ();
use Scalar::Util (); use Scalar::Util qw(looks_like_number blessed);
our %TYPES = ( our %TYPES = (
Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) },
Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, Num => sub { defined $_[0] && looks_like_number($_[0]) },
Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) },
Str => sub { defined $_[0] }, Str => sub { defined $_[0] },
Object => sub { defined $_[0] && &Scalar::Util::blessed }, Object => sub { defined $_[0] && blessed($_[0]) },
FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened },
map { map {
@@ -1282,7 +1283,7 @@ sub Mo::import {
$method = sub { $method = sub {
if ( $#_ ) { if ( $#_ ) {
Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">)
unless blessed($_[1]) && $_[1]->does($role) unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) }
} }
goto &$original_method goto &$original_method
}; };

View File

@@ -1080,14 +1080,15 @@ use strict;
use warnings qw( FATAL all ); use warnings qw( FATAL all );
use Carp (); use Carp ();
use Scalar::Util (); use Scalar::Util qw(looks_like_number blessed);
our %TYPES = ( our %TYPES = (
Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) },
Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, Num => sub { defined $_[0] && looks_like_number($_[0]) },
Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) },
Str => sub { defined $_[0] }, Str => sub { defined $_[0] },
Object => sub { defined $_[0] && &Scalar::Util::blessed }, Object => sub { defined $_[0] && blessed($_[0]) },
FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened },
map { map {
@@ -1261,7 +1262,7 @@ sub Mo::import {
$method = sub { $method = sub {
if ( $#_ ) { if ( $#_ ) {
Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">)
unless blessed($_[1]) && $_[1]->does($role) unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) }
} }
goto &$original_method goto &$original_method
}; };

View File

@@ -1222,14 +1222,15 @@ use strict;
use warnings qw( FATAL all ); use warnings qw( FATAL all );
use Carp (); use Carp ();
use Scalar::Util (); use Scalar::Util qw(looks_like_number blessed);
our %TYPES = ( our %TYPES = (
Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) },
Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, Num => sub { defined $_[0] && looks_like_number($_[0]) },
Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) },
Str => sub { defined $_[0] }, Str => sub { defined $_[0] },
Object => sub { defined $_[0] && &Scalar::Util::blessed }, Object => sub { defined $_[0] && blessed($_[0]) },
FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened },
map { map {
@@ -1403,7 +1404,7 @@ sub Mo::import {
$method = sub { $method = sub {
if ( $#_ ) { if ( $#_ ) {
Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">)
unless blessed($_[1]) && $_[1]->does($role) unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) }
} }
goto &$original_method goto &$original_method
}; };

View File

@@ -2774,14 +2774,15 @@ use strict;
use warnings qw( FATAL all ); use warnings qw( FATAL all );
use Carp (); use Carp ();
use Scalar::Util (); use Scalar::Util qw(looks_like_number blessed);
our %TYPES = ( our %TYPES = (
Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) },
Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, Num => sub { defined $_[0] && looks_like_number($_[0]) },
Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) },
Str => sub { defined $_[0] }, Str => sub { defined $_[0] },
Object => sub { defined $_[0] && &Scalar::Util::blessed }, Object => sub { defined $_[0] && blessed($_[0]) },
FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened },
map { map {
@@ -2955,7 +2956,7 @@ sub Mo::import {
$method = sub { $method = sub {
if ( $#_ ) { if ( $#_ ) {
Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">)
unless blessed($_[1]) && $_[1]->does($role) unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) }
} }
goto &$original_method goto &$original_method
}; };

View File

@@ -1105,14 +1105,15 @@ use strict;
use warnings qw( FATAL all ); use warnings qw( FATAL all );
use Carp (); use Carp ();
use Scalar::Util (); use Scalar::Util qw(looks_like_number blessed);
our %TYPES = ( our %TYPES = (
Bool => sub { !$_[0] || (defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == 1) }, Bool => sub { !$_[0] || (defined $_[0] && looks_like_number($_[0]) && $_[0] == 1) },
Num => sub { defined $_[0] && &Scalar::Util::looks_like_number }, Num => sub { defined $_[0] && looks_like_number($_[0]) },
Int => sub { defined $_[0] && &Scalar::Util::looks_like_number && $_[0] == int $_[0] }, Int => sub { defined $_[0] && looks_like_number($_[0]) && $_[0] == int($_[0]) },
Str => sub { defined $_[0] }, Str => sub { defined $_[0] },
Object => sub { defined $_[0] && &Scalar::Util::blessed }, Object => sub { defined $_[0] && blessed($_[0]) },
FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened }, FileHandle => sub { local $@; require IO::Handle; fileno($_[0]) && $_[0]->opened },
map { map {
@@ -1286,7 +1287,7 @@ sub Mo::import {
$method = sub { $method = sub {
if ( $#_ ) { if ( $#_ ) {
Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">) Carp::confess(qq<Attribute ($attribute) doesn't consume a '$role' role">)
unless blessed($_[1]) && $_[1]->does($role) unless Scalar::Util::blessed($_[1]) && eval { $_[1]->does($role) }
} }
goto &$original_method goto &$original_method
}; };