MooseX::Extended::Role::Custom - Build a custom Moose::Role, just for you.
version 0.32
Define your own version of MooseX::Extended:
package My::Moose::Role { use MooseX::Extended::Role::Custom; sub import { my ( $class, %args ) = @_; MooseX::Extended::Role::Custom->create( excludes => [qw/ carp /], includes => ['multi'], %args # you need this to allow customization of your customization ); } } # no need for a true value
And then use it:
package Some::Class::Role { use My::Moose::Role types => [qw/ArrayRef Num/]; param numbers => ( isa => ArrayRef[Num] ); multi sub foo ($self) { ... } multi sub foo ($self, $bar) { ... } }
I hate boilerplate, so let's get rid of it. Let's say you don't want warnings on classes implicitly overriding role methods, namespace::autoclean or carp, but you do want multi. Plus, you have custom versions of carp and croak:
carp
multi
croak
package Some::Class { use MooseX::Extended excludes => [qw/ WarnOnConflict autoclean carp /], includes => ['multi']; use My::Carp q(carp croak); ... my code here }
You probably get tired of typing that every time. Now you don't have to.
package My::Moose { use MooseX::Extended::Custom; use My::Carp (); use Import::Into; sub import { my ( $class, %args ) = @_; my $target_class = caller; MooseX::Extended::Custom->create( excludes => [qw/ autoclean carp /], includes => ['multi'], %args # you need this to allow customization of your customization ); My::Carp->import::into($target_class, qw(carp croak)); } }
And then when you use My::Moose, that's all set up for you.
My::Moose
If you need to change this on a "per class" basis:
use My::Moose excludes => ['carp'], types => [qw/ArrayRef Num/];
The above changes your excludes and adds types, but doesn't change your includes.
excludes
types
includes
Curtis "Ovid" Poe <curtis.poe@gmail.com>
This software is Copyright (c) 2022 by Curtis "Ovid" Poe.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
To install MooseX::Extended, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MooseX::Extended
CPAN shell
perl -MCPAN -e shell install MooseX::Extended
For more information on module installation, please visit the detailed CPAN module installation guide.