return 0 if ref($class) || !defined($class) || !length($class);
# walk the symbol table tree to avoid autovififying
- # \*{${main::}{"Foo::"}} == \*main::Foo::
+ # \*{${main::}{"Foo::"}{"Bar::"}} == \*main::Foo::Bar::
my $pack = \%::;
foreach my $part (split('::', $class)) {
- my $entry = \$pack->{$part . '::'};
+ $part .= '::';
+ return 0 if !exists $pack->{$part};
+
+ my $entry = \$pack->{$part};
return 0 if ref($entry) ne 'GLOB';
- $pack = *{$entry}{HASH} or return 0;
+ $pack = *{$entry}{HASH};
}
+ return 0 if !%{$pack};
+
# check for $VERSION or @ISA
return 1 if exists $pack->{VERSION}
&& defined *{$pack->{VERSION}}{SCALAR} && defined ${ $pack->{VERSION} };
return;
}
-
package
Mouse::Meta::Class;
return values %attrs;
}
+sub new_object {
+ my $self = shift;
+ my %args = (@_ == 1 ? %{$_[0]} : @_);
+
+ my $object = bless {}, $self->name;
+
+ $self->_initialize_object($object, \%args);
+ return $object;
+}
+
sub _initialize_object{
my($self, $object, $args, $ignore_triggers) = @_;
=head1 VERSION
-This document describes Mouse version 0.40_06
+This document describes Mouse version 0.42
=head1 SEE ALSO