apply correct roles/metaroles to roles

This commit is contained in:
Graham Knop 2010-03-02 18:31:16 -06:00
parent a5f54a7910
commit 38e2e091dc
2 changed files with 44 additions and 23 deletions

View file

@ -74,17 +74,28 @@ sub init_meta {
my $class = shift; my $class = shift;
my %args = @_; my %args = @_;
Moose::Util::MetaRole::apply_base_class_roles( my $for_class = $args{for_class};
for => $args{for_class}, if ($for_class->meta->isa('Moose::Meta::Class')) {
roles => [ 'WebGUI::Definition::Role::Object' ], Moose::Util::MetaRole::apply_base_class_roles(
); for => $for_class,
Moose::Util::MetaRole::apply_metaroles( roles => [ 'WebGUI::Definition::Role::Object' ],
for => $args{for_class}, );
class_metaroles => { Moose::Util::MetaRole::apply_metaroles(
class => ['WebGUI::Definition::Meta::Class'], for => $for_class,
}, class_metaroles => {
); class => ['WebGUI::Definition::Meta::Class'],
return $args{for_class}->meta; },
);
}
else {
Moose::Util::MetaRole::apply_metaroles(
for => $for_class,
role_metaroles => {
role => ['WebGUI::Definition::Meta::Class'],
},
);
}
return $for_class->meta;
} }
#------------------------------------------------------------------- #-------------------------------------------------------------------

View file

@ -76,18 +76,28 @@ sub import {
sub init_meta { sub init_meta {
my $class = shift; my $class = shift;
my %args = @_; my %args = @_;
my $for_class = $args{for_class};
Moose::Util::MetaRole::apply_base_class_roles( if ($for_class->meta->isa('Moose::Meta::Class')) {
for => $args{for_class}, Moose::Util::MetaRole::apply_base_class_roles(
roles => [ 'WebGUI::Definition::Role::Asset' ], for => $for_class,
); roles => [ 'WebGUI::Definition::Role::Asset' ],
Moose::Util::MetaRole::apply_metaroles( );
for => $args{for_class}, Moose::Util::MetaRole::apply_metaroles(
class_metaroles => { for => $for_class,
class => ['WebGUI::Definition::Meta::Asset'], class_metaroles => {
}, class => ['WebGUI::Definition::Meta::Asset'],
); },
return $args{for_class}->meta; );
}
else {
Moose::Util::MetaRole::apply_metaroles(
for => $for_class,
role_metaroles => {
role => ['WebGUI::Definition::Meta::Asset'],
},
);
}
return $for_class->meta;
} }
1; 1;