Merge branch 'master' into blead
gfx [Sat, 24 Oct 2009 04:00:55 +0000 (13:00 +0900)]
1  2 
lib/Mouse/Exporter.pm
lib/Mouse/Object.pm

diff --combined lib/Mouse/Exporter.pm
@@@ -143,17 -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}
      $^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;
 +
 +            print "[@traits]\n";
 +
 +            not_supported('-traits');
 +            require Mouse::Util::MetaRole;
 +            Mouse::Util::MetaRole::apply_metaclass_roles(
 +                for_class       => $into,
 +                metaclass_roles => \@traits,
 +            );
 +        }
      }
  
      if(@exports){
@@@ -265,7 -238,7 +260,7 @@@ Mouse::Exporter - make an import() and 
  
  =head1 VERSION
  
- This document describes Mouse version 0.39
+ This document describes Mouse version 0.40
  
  =head1 SYNOPSIS
  
diff --combined lib/Mouse/Object.pm
@@@ -4,7 -4,7 +4,7 @@@ use Mouse::Util qw(does dump); # enable
  sub new {
      my $class = shift;
  
 -    $class->throw_error('Cannot call new() on an instance') if ref $class;
 +    $class->meta->throw_error('Cannot call new() on an instance') if ref $class;
  
      my $args = $class->BUILDARGS(@_);
  
@@@ -95,7 -95,7 +95,7 @@@ Mouse::Object - The base object for Mou
  
  =head1 VERSION
  
- This document describes Mouse version 0.39
+ This document describes Mouse version 0.40
  
  =head1 METHODS