package MyApp::Moose;
use Moose ();
use Moose::Exporter;
use Moose::Util::MetaRole;
use MyApp::Role::Meta::Class;
use MyApp::Role::Meta::Method::Constructor;
use MyApp::Role::Object;
Moose::Exporter->setup_import_methods( also => 'Moose' );
sub init_meta {
shift;
my %args = @_;
Moose->init_meta(%args);
Moose::Util::MetaRole::apply_metaroles(
for => $args{for_class},
class_metaroles => {
class => ['MyApp::Role::Meta::Class'],
constructor => ['MyApp::Role::Meta::Method::Constructor'],
},
);
Moose::Util::MetaRole::apply_base_class_roles(
for => $args{for_class},
roles => ['MyApp::Role::Object'],
);
return $args{for_class}->meta();
}
This module makes sure to preserve any existing superclasses and roles already set for the meta objects, which means that any number of extensions can apply roles in any order.
It accepts the following parameters:
This specifies the class or for which to alter the meta classes. This can be a package name, or an appropriate meta-object (a Moose::Meta::Class or Moose::Meta::Role).
This is a hash reference specifying which metaroles will be applied to the class metaclass and its contained metaclasses and helper classes.
Each key should in turn point to an array reference of role names.
It accepts the following keys:
This is a hash reference specifying which metaroles will be applied to the role metaclass and its contained metaclasses and helper classes.
It accepts the following keys:
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.