english_list
meta_attribute_alias
meta_class_alias
+ throw
];
Sub::Exporter::setup_exporter({
# XXX - this should be added to Params::Util
sub _STRINGLIKE0 ($) {
- return _STRING( $_[0] )
- || ( defined $_[0]
- && $_[0] eq q{} )
- || ( blessed $_[0]
- && overload::Method( $_[0], q{""} )
- && length "$_[0]" );
+ return 1 if _STRING( $_[0] );
+ if ( blessed $_[0] ) {
+ return overload::Method( $_[0], q{""} );
+ }
+
+ return 1 if defined $_[0] && $_[0] eq q{};
+
+ return 0;
}
sub _reconcile_roles_for_metaclass {
return 1;
}
+sub throw {
+ if (@_ % 2) {
+ unshift @_, 'message';
+ }
+
+ my %args = @_;
+
+ my $class = delete($args{class}) || 'Moose::Exception';
+ my $roles = delete($args{roles});
+
+ my $metaclass;
+
+ load_class($class);
+
+ if ($roles) {
+ $metaclass = Moose::Meta::Class->create_anon_class(
+ superclasses => [$class],
+ roles => $roles,
+ );
+ }
+ else {
+ $metaclass = Moose::Meta::Class->initialize($class);
+ }
+
+ $metaclass->name->throw(\%args);
+}
+
+
1;
# ABSTRACT: Utilities for working with Moose classes