Minions
view release on metacpan or search on metacpan
lib/Minions/Role.pm view on Meta::CPAN
package Minions::Role;
require Minions::Implementation;
our @ISA = qw( Minions::Implementation );
sub update_args {
my ($class, $arg) = @_;
$arg->{role} = 1;
}
1;
__END__
=head1 NAME
Minions::Role
=head1 SYNOPSIS
package Foo::Role;
use Minions::Role
has => {
beans => { default => sub { [ ] } },
},
requires => {
methods => [qw/some required methods/],
attributes => [qw/some required attributes/],
},
roles => [qw/all these roles/],
semiprivate => [qw/some internal subs/],
;
=head1 DESCRIPTION
Roles provide reusable implementation details, i.e. they solve the problem of what to do when the same implementation details are found in more than one implementation package.
=head1 CONFIGURATION
A role package can be configured either using Minions::Role or with a package variable C<%__meta__>. Both methods make use of the following keys:
=head2 has => HASHREF
This works the same way as in an implementation package.
=head2 requires => HASHREF
A hash with keys:
=head3 methods => ARRAYREF
Any methods listed here must be provided by an implementation package or a role.
=head3 attributes => ARRAYREF
Any attributes listed here must be provided by an implementation package or a role.
Variables with names corresponding to these attributes will be created in the role package to allow accessing the attributes e.g.
use Minions::Role
requires => {
attributes => [qw/length width/]
};
( run in 0.762 second using v1.01-cache-2.11-cpan-ceb78f64989 )