X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FRole%2FTiny.pm;h=07fb3d44cbde003db625eb13f2434ae3d8a7b972;hb=cca4fd3e2b7ba5b6b6bd615d4f46ae2aefffd27b;hp=c5dfe6c352520fad00e67c9048a4ed7dc557cde2;hpb=1c93a64319ca3ada66ddceb86bb537e2a7af5893;p=gitmo%2FRole-Tiny.git diff --git a/lib/Role/Tiny.pm b/lib/Role/Tiny.pm index c5dfe6c..07fb3d4 100644 --- a/lib/Role/Tiny.pm +++ b/lib/Role/Tiny.pm @@ -13,6 +13,7 @@ our %INFO; our %APPLIED_TO; our %COMPOSED; our %COMPOSITE_INFO; +our @ON_ROLE_CREATE; # Module state workaround totally stolen from Zefram's Module::Runtime. @@ -72,6 +73,7 @@ sub import { @{$INFO{$target}{not_methods}={}}{@not_methods} = @not_methods; # a role does itself $APPLIED_TO{$target} = { $target => undef }; + $_->($target) for @ON_ROLE_CREATE; } sub role_application_steps { @@ -641,6 +643,8 @@ Returns true if the given package is a role. =item * On perl 5.8.8 and earlier, applying a role to an object won't apply any overloads from the role to all copies of the object. +=back + =head1 SEE ALSO L is the attribute-less subset of L; L is