NAME
MooX::BuildClass - build a Moo class at runtime
VERSION
version 0.152070
SYNOPSIS
use MooX::BuildClass;
BuildClass "Cat::Food" => (
install => [
feed_lion => sub {
my $self = shift;
my $amount = shift || 1;
$self->pounds( $self->pounds - $amount );
},
],
has => [ taste => ( is => 'ro', ) ],
has => [
brand => (
is => 'ro',
isa => sub {
die "Only SWEET-TREATZ supported!" unless $_[0] eq 'SWEET-TREATZ';
},
)
],
has => [
pounds => (
is => 'rw',
isa => sub { die "$_[0] is too much cat food!" unless $_[0] < 15 },
)
],
extends => "Food",
);
1;
DESCRIPTION
Provides a runtime interface to create Moo classes. Takes a class name and a pair-list of parameters used to create the class. The pairs are always in the form of ( function => arguments ), where arguments has to be a single scalar. It can be either an array-ref, or if it is not one, it will be wrapped in one. function
can be a string from this list:
extends has with before around after install
The obvious ones are proxies for the corresponding Moo class setup functions, and install is used to set up methods.
METHODS
make_variant_package_name
Advises Package::Variant to use the user-provided name to create the new class in. Dies if that class has already been defined.
make_variant
Takes the arguments and executes them as function calls on the target package to declare the class.
AUTHOR
Christian Walde <walde.christian@gmail.com>
COPYRIGHT AND LICENSE
Christian Walde has dedicated the work to the Commons by waiving all of his or her rights to the work worldwide under copyright law and all related or neighboring legal rights he or she had in the work, to the extent allowable by law.
Works under CC0 do not require attribution. When citing the work, you should not imply endorsement by the author.