NAME

MooX::BuildClass - build a Moo class at runtime

VERSION

version 0.152091

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.

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.