MooseX::APIRole - automatically create API roles for your classes and roles
version 0.01
If you write a Moose class like this:
package Class; use Moose; use MooseX::APIRole; use true; use namespace::autoclean; sub foo {} make_api_role 'Class::API'; __PACKAGE__->meta->make_immutable;
MooseX::APIRole will automatically create an API role like this:
MooseX::APIRole
package Class::API; use Moose::Role; requires 'foo';
And apply it to your class.
If you forget what you called the API role, or don't want the API role to have a name, you can get at it via the metaclass:
my $role = Class->meta->get_api_role;
You can then treat $role like you would any other role.
$role
You can also create API roles for roles:
package Role; use Moose::Role; use MooseX::APIRole; use true; use namespace::autoclean; sub foo {} requires 'bar'; make_api_role 'Role::API';
This results in the following role:
package Role::API; use Moose::Role; requires 'foo'; requires 'bar';
If you do not call make_api_role or apply_api_role, you can still get the lazily-built anonymous API role via the metaclass. But the class won't does_role the role, which could be confusing.
make_api_role
apply_api_role
does_role
Inheritance is handled such that if Subclass extends Class with API role APIRole, Subclass will also do the APIRole. The same applies to roles; if Role does RoleAPI and AnotherRole consumes Role, then AnotherRole will also do RoleAPI.
Subclass
Class
APIRole
Role
RoleAPI
AnotherRole
Wunderbar.
You can control the behavior of this module by calling these imported functions:
This is the namespace that you want the API role to be in. The results of using an existing class name are undefined. It's likely that demons will come out of your nose and all your plants will die. So come up with a unique name.
If you want the API role to be applied to your class or role, call this function.
You almost always want to do this, but it can't be done automatically for the same reason that Class->meta->make_immutable can't be done automatically.
Class->meta->make_immutable
Works like set_api_role_name followed by apply_api_role.
set_api_role_name
See MooseX::APIRole::Meta for the metaclass attributes you get.
Jonathan Rockway <jrockway@cpan.org>
This software is copyright (c) 2010 by Jonathan Rockway.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install MooseX::APIRole, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MooseX::APIRole
CPAN shell
perl -MCPAN -e shell install MooseX::APIRole
For more information on module installation, please visit the detailed CPAN module installation guide.