Any-Moose
view release on metacpan or search on metacpan
lib/Any/Moose.pm view on Meta::CPAN
package Any::Moose; # git description: v0.26-20-g4c2f951
# ABSTRACT: (DEPRECATED) use Moo instead!
# KEYWORDS: deprecated Moose Mouse abstraction layer object-oriented
# vim: set ts=8 sts=4 sw=4 tw=115 et :
use 5.006_002;
use strict;
use warnings;
our $VERSION = '0.27';
warnings::warnif('deprecated', 'Any::Moose is deprecated. Please use Moo instead');
# decide which backend to use
our $PREFERRED;
do {
local $@;
if ($ENV{ANY_MOOSE}) {
$PREFERRED = $ENV{'ANY_MOOSE'};
warn "ANY_MOOSE is not set to Moose or Mouse"
unless $PREFERRED eq 'Moose'
|| $PREFERRED eq 'Mouse';
# if we die here, then perl gives "unknown error" which doesn't tell
# you what the problem is at all. argh.
if ($PREFERRED eq 'Moose' && !eval { require Moose }) {
warn "\$ANY_MOOSE is set to Moose but we cannot load it";
}
elsif ($PREFERRED eq 'Mouse' && !eval { require Mouse }) {
warn "\$ANY_MOOSE is set to Mouse but we cannot load it";
}
}
elsif ( $INC{'Moo.pm'} && eval { require Moose } ) {
$PREFERRED = 'Moose';
}
elsif (_is_moose_loaded()) {
$PREFERRED = 'Moose';
}
elsif (eval { require Mouse; require Mouse::Util; Mouse::Util->can('get_metaclass_by_name') }) {
$PREFERRED = 'Mouse';
}
elsif (eval { require Moose }) {
$PREFERRED = 'Moose';
}
else {
require Carp;
warn "Unable to locate Mouse or Moose in INC";
}
};
sub import {
my $self = shift;
my $pkg = caller;
# Any::Moose gives you strict and warnings
strict->import;
warnings->import;
# first options are for Mo*se
unshift @_, 'Moose' if !@_ || ref($_[0]);
while (my $module = shift) {
my $options = @_ && ref($_[0]) ? shift : [];
$options = $self->_canonicalize_options(
module => $module,
options => $options,
package => $pkg,
);
$self->_install_module($options);
}
# give them any_moose too
( run in 2.116 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )