Checking in changes prior to tagging of version 0.40_02. Changelog diff is:
[gitmo/Mouse.git] / lib / Mouse / Exporter.pm
index 636399d..8be55d9 100644 (file)
@@ -143,10 +143,17 @@ sub do_import {
     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, @{shift(@args)};
+            }
+            else {
+                Mouse::Util::not_supported("-$arg");
+            }
         }
         elsif($arg =~ s/^://){
             my $group = $spec->{groups}{$arg}
@@ -161,17 +168,25 @@ sub do_import {
     $^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;
-    }
-
     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;
+
+            not_supported('-traits');
+            require Mouse::Util::MetaRole;
+            Mouse::Util::MetaRole::apply_metaclass_roles(
+                for_class       => $into,
+                metaclass_roles => \@traits,
+            );
+        }
     }
 
     if(@exports){
@@ -243,7 +258,7 @@ Mouse::Exporter - make an import() and unimport() just like Mouse.pm
 
 =head1 VERSION
 
-This document describes Mouse version 0.38
+This document describes Mouse version 0.40_02
 
 =head1 SYNOPSIS