sub import{
$^H |= _strict_bits; # strict->import;
- ${^WARNING_BITS} = $warnings::Bits{all}; # warnings->import;
+ ${^WARNING_BITS} |= $warnings::Bits{all}; # warnings->import;
return;
}
my $into = _get_caller_package(ref($args[0]) ? shift @args : undef);
my @exports;
+ my @traits;
- foreach my $arg(@args){
+ while(@args){
+ my $arg = shift @args;
if($arg =~ s/^-//){
- Mouse::Util::not_supported("-$arg");
+ if($arg eq 'traits'){
+ push @traits, ref($args[0]) ? @{shift(@args)} : shift(@args);
+ }
+ else {
+ Mouse::Util::not_supported("-$arg");
+ }
}
elsif($arg =~ s/^://){
my $group = $spec->{groups}{$arg}
}
$^H |= _strict_bits; # strict->import;
- ${^WARNING_BITS} = $warnings::Bits{all}; # warnings->import;
-
- if($into eq 'main' && !$spec->{_export_to_main}){
- warn qq{$package does not export its sugar to the 'main' package.\n};
- return;
- }
+ ${^WARNING_BITS} |= $warnings::Bits{all}; # warnings->import;
if($spec->{INIT_META}){
+ my $meta;
foreach my $init_meta(@{$spec->{INIT_META}}){
- $into->$init_meta(for_class => $into);
+ $meta = $into->$init_meta(for_class => $into);
}
- # _apply_meta_traits($into); # TODO
+ if(@traits){
+ my $type = (split /::/, ref $meta)[-1]; # e.g. "Class" for "My::Meta::Class"
+ @traits =
+ map{
+ ref($_) ? $_
+ : Mouse::Util::resolve_metaclass_alias($type => $_, trait => 1)
+ } @traits;
+
+ require Mouse::Util::MetaRole;
+ Mouse::Util::MetaRole::apply_metaclass_roles(
+ for_class => $into,
+ metaclass_roles => \@traits,
+ );
+ }
+ }
+ elsif(@traits){
+ Carp::confess("Cannot provide traits when $package does not have an init_meta() method");
}
if(@exports){
#sub _spec{ %SPEC }
1;
-
__END__
=head1 NAME
Mouse::Exporter - make an import() and unimport() just like Mouse.pm
+=head1 VERSION
+
+This document describes Mouse version 0.42
+
=head1 SYNOPSIS
package MyApp::Mouse;\r