use strict;
use warnings;
+use Class::Load qw( is_class_loaded );
use List::MoreUtils ();
use Scalar::Util qw( blessed looks_like_number reftype );
=> as 'Item'
=> where { !defined($_) }
=> inline_as {
- $_[0]->parent()->_inline_check($_[1])
- . ' && !defined(' . $_[1] . ')'
+ '!defined(' . $_[1] . ')'
};
subtype 'Defined'
=> as 'Item'
=> where { defined($_) }
=> inline_as {
- $_[0]->parent()->_inline_check($_[1])
- . ' && defined(' . $_[1] . ')'
+ 'defined(' . $_[1] . ')'
};
subtype 'Bool'
=> as 'Item'
=> where { !defined($_) || $_ eq "" || "$_" eq '1' || "$_" eq '0' }
=> inline_as {
- $_[0]->parent()->_inline_check($_[1])
- . ' && ('
+ '('
. '!defined(' . $_[1] . ') '
. '|| ' . $_[1] . ' eq "" '
- . '|| "' . $_[1] . '" eq "1" '
- . '|| "' . $_[1] . '" eq "0"'
+ . '|| (' . $_[1] . '."") eq "1" '
+ . '|| (' . $_[1] . '."") eq "0"'
. ')'
};
. ')'
};
+ my $value_type = Moose::Util::TypeConstraints::find_type_constraint('Value');
subtype 'Num'
=> as 'Str'
=> where { Scalar::Util::looks_like_number($_) }
=> inline_as {
# the long Str tests are redundant here
- Moose::Util::TypeConstraints::find_type_constraint('Value')->_inline_check($_[1])
+ $value_type->_inline_check($_[1])
. ' && Scalar::Util::looks_like_number(' . $_[1] . ')'
};
=> as 'Num'
=> where { (my $val = $_) =~ /\A-?[0-9]+\z/ }
=> inline_as {
- Moose::Util::TypeConstraints::find_type_constraint('Value')->_inline_check($_[1])
+ $value_type->_inline_check($_[1])
. ' && (my $val = ' . $_[1] . ') =~ /\A-?[0-9]+\z/'
};
=> where { blessed($_) }
=> inline_as { 'Scalar::Util::blessed(' . $_[1] . ')' };
- # This type is deprecated.
- subtype 'Role'
- => as 'Object'
- => where { $_->can('does') };
-
subtype 'ClassName'
=> as 'Str'
- => where { Class::MOP::is_class_loaded($_) }
+ => where { is_class_loaded($_) }
# the long Str tests are redundant here
- => inline_as { 'Class::MOP::is_class_loaded(' . $_[1] . ')' };
+ => inline_as { 'Class::Load::is_class_loaded(' . $_[1] . ')' };
subtype 'RoleName'
=> as 'ClassName'