package Mouse::Exporter;
use strict;
use warnings;
-
-use Carp qw(confess);
+use Carp ();
my %SPEC;
my $strict_bits;
-BEGIN{ $strict_bits = strict::bits(qw(subs refs vars)); }
-
my $warnings_extra_bits;
-BEGIN{ $warnings_extra_bits = warnings::bits(FATAL => 'recursion') }
+BEGIN{
+ $strict_bits = strict::bits(qw(subs refs vars));
+ $warnings_extra_bits = warnings::bits(FATAL => 'recursion');
+}
# it must be "require", because Mouse::Util depends on Mouse::Exporter,
# which depends on Mouse::Util::import()
$args{EXPORTS} = \%exports;
$args{REMOVABLES} = \@removables;
- $args{groups}{all} ||= \@all;
+ $args{groups}{all} ||= \@all;
if(my $default_list = $args{groups}{default}){
my %default;
foreach my $keyword(@{$default_list}){
$default{$keyword} = $exports{$keyword}
- || confess(qq{The $exporting_package package does not export "$keyword"});
+ || Carp::confess(qq{The $exporting_package package does not export "$keyword"});
}
$args{DEFAULT} = \%default;
}
return (\&do_import, \&do_unimport);
}
-
# the entity of general import()
sub do_import {
my($package, @args) = @_;
my $spec = $SPEC{$package}
- || confess("The package $package package does not use Mouse::Exporter");
+ || Carp::confess("The package $package package does not use Mouse::Exporter");
my $into = _get_caller_package(ref($args[0]) ? shift @args : undef);
}
elsif($arg =~ s/^://){
my $group = $spec->{groups}{$arg}
- || confess(qq{The $package package does not export the group "$arg"});
+ || Carp::confess(qq{The $package package does not export the group "$arg"});
push @exports, @{$group};
}
else{
}
}
- $^H |= $strict_bits; # strict->import;
+ # strict->import;
+ $^H |= $strict_bits;
# warnings->import('all', FATAL => 'recursion');
${^WARNING_BITS} |= $warnings::Bits{all};
${^WARNING_BITS} |= $warnings_extra_bits;
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;
+ @traits = map{
+ ref($_)
+ ? $_
+ : Mouse::Util::resolve_metaclass_alias($type => $_, trait => 1)
+ } @traits;
require Mouse::Util::MetaRole;
Mouse::Util::MetaRole::apply_metaroles(
- for => $into,
+ for => $into,
Mouse::Util::is_a_metarole($into->meta)
? (role_metaroles => { role => \@traits })
: (class_metaroles => { class => \@traits }),
foreach my $keyword(@exports){
push @export_table,
$keyword => ($spec->{EXPORTS}{$keyword}
- || confess(qq{The $package package does not export "$keyword"})
+ || Carp::confess(qq{The $package package does not export "$keyword"})
);
}
Mouse::Util::install_subroutines($into, @export_table);
my($package, $arg) = @_;
my $spec = $SPEC{$package}
- || confess("The package $package does not use Mouse::Exporter");
+ || Carp::confess("The package $package does not use Mouse::Exporter");
my $from = _get_caller_package($arg);
for my $keyword (@{ $spec->{REMOVABLES} }) {
next if !exists $stash->{$keyword};
my $gv = \$stash->{$keyword};
- if(ref($gv) eq 'GLOB' && *{$gv}{CODE} == $spec->{EXPORTS}{$keyword}){ # make sure it is from us
+
+ # remove what is from us
+ if(ref($gv) eq 'GLOB' && *{$gv}{CODE} == $spec->{EXPORTS}{$keyword}){
delete $stash->{$keyword};
}
}
}
}
-#sub _spec{ %SPEC }
-
1;
__END__
=head1 VERSION
-This document describes Mouse version 0.68
+This document describes Mouse version 0.95
=head1 SYNOPSIS
use Mouse::Exporter;
Mouse::Exporter->setup_import_methods(
- as_is => [ 'has_rw', 'other_sugar', \&Some::Random::thing ],
- also => 'Mouse',
+ as_is => [ 'has_rw', 'other_sugar', \&Some::Random::thing ],
+ also => 'Mouse',
);
sub has_rw {