X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FRole%2FParameterized.pm;h=2db4d16bb0ea8d0825f4ce2e7825b90a0f19db7c;hb=fa62759642ad1cae5121dcb3a7c781171909d793;hp=f145ca302a1b1b84a20c4f3b9c019e3580666240;hpb=93c2fd30a60cc71f9b06332a75e10433212ecf7a;p=gitmo%2FMooseX-Role-Parameterized.git diff --git a/lib/MooseX/Role/Parameterized.pm b/lib/MooseX/Role/Parameterized.pm index f145ca3..2db4d16 100644 --- a/lib/MooseX/Role/Parameterized.pm +++ b/lib/MooseX/Role/Parameterized.pm @@ -15,7 +15,7 @@ our $CURRENT_METACLASS; __PACKAGE__->setup_import_methods( with_caller => ['parameter', 'role', 'method'], - as_is => ['has', 'with', 'extends', 'requires', 'augment', 'inner'], + as_is => ['has', 'with', 'extends', 'requires', 'excludes', 'augment', 'inner'], ); sub parameter { @@ -97,6 +97,13 @@ sub requires { $CURRENT_METACLASS->add_required_methods(@_); } +sub excludes { + confess "excludes must be called within the role { ... } block." + unless $CURRENT_METACLASS; + croak "Must specify at least one role" unless @_; + $CURRENT_METACLASS->add_excluded_roles(@_); +} + sub extends { croak "Roles do not currently support 'extends'" } sub inner { croak "Roles cannot support 'inner'" }