NAME
MooseX::Extended::Role::Custom - Build a custom Moose::Role, just for you.
VERSION
version 0.35
SYNOPSIS
Define your own version of MooseX::Extended:
package
My::Moose::Role {
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 {
param
numbers
=> (
isa
=> ArrayRef[Num] );
multi
sub
foo (
$self
) { ... }
multi
sub
foo (
$self
,
$bar
) { ... }
}
DESCRIPTION
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
:
package
Some::Class {
excludes
=> [
qw/ WarnOnConflict autoclean carp /
],
includes
=> [
'multi'
];
...
my
code here
}
You probably get tired of typing that every time. Now you don't have to.
package
My::Moose {
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.
If you need to change this on a "per class" basis:
The above changes your excludes
and adds types
, but doesn't change your includes
.
AUTHOR
Curtis "Ovid" Poe <curtis.poe@gmail.com>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2022 by Curtis "Ovid" Poe.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)