X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMooseX%2FRole%2FParameterized.pm;h=938cc6ae5535237a4b4651c3b0b9df15a568e0c2;hb=20725a2d3343f36ef416a3162143770bd81d96b8;hp=3095975eb13625d41b01277172cb70f28dffd9e5;hpb=03c4551d7851593e279363603431cd3a42e0356e;p=gitmo%2FMooseX-Role-Parameterized.git diff --git a/lib/MooseX/Role/Parameterized.pm b/lib/MooseX/Role/Parameterized.pm index 3095975..938cc6a 100644 --- a/lib/MooseX/Role/Parameterized.pm +++ b/lib/MooseX/Role/Parameterized.pm @@ -16,7 +16,7 @@ our $CURRENT_METACLASS; __PACKAGE__->setup_import_methods( with_caller => ['parameter', 'role', 'method'], - as_is => ['has', 'with', 'extends', 'requires', 'excludes', 'augment', 'inner', 'before', 'after', 'around'], + as_is => ['has', 'with', 'extends', 'requires', 'excludes', 'augment', 'inner', 'before', 'after', 'around', 'super', 'override'], ); sub parameter { @@ -150,6 +150,20 @@ sub excludes { $CURRENT_METACLASS->add_excluded_roles(@_); } +# see Moose.pm for discussion +sub super { + return unless $Moose::SUPER_BODY; + $Moose::SUPER_BODY->(@Moose::SUPER_ARGS); +} + +sub override { + confess "override must be called within the role { ... } block." + unless $CURRENT_METACLASS; + + my ($name, $code) = @_; + $CURRENT_METACLASS->add_override_method_modifier($name, $code); +} + sub extends { croak "Roles do not currently support 'extends'" } sub inner { croak "Roles cannot support 'inner'" }