use Scalar::Util 'blessed';
use Carp 'confess';
-our $VERSION = '0.61';
+our $VERSION = '0.72';
$VERSION = eval $VERSION;
our $AUTHORITY = 'cpan:STEVAN';
sub add_attribute {
my $self = shift;
my $name = shift;
- (defined $name && $name)
- || Moose->throw_error("You must provide a name for the attribute");
+ unless ( defined $name && $name ) {
+ require Moose;
+ Moose->throw_error("You must provide a name for the attribute");
+ }
my $attr_desc;
if (scalar @_ == 1 && ref($_[0]) eq 'HASH') {
$attr_desc = $_[0];
my $role_name = $self->name;
my $method_metaclass = $self->method_metaclass;
- my %all_code = $self->get_all_package_symbols('CODE');
+ my $all_code = $self->get_all_package_symbols('CODE');
- foreach my $symbol (keys %all_code) {
- my $code = $all_code{$symbol};
+ foreach my $symbol (keys %{ $all_code }) {
+ my $code = $all_code->{$symbol};
next if exists $map->{$symbol} &&
defined $map->{$symbol} &&
}
sub create {
- my ( $role, @args ) = @_;
-
- unshift @args, 'package' if @args % 2 == 1;
+ my ( $role, $package_name, %options ) = @_;
- my (%options) = @args;
- my $package_name = $options{package};
+ $options{package} = $package_name;
(ref $options{attributes} eq 'HASH')
|| confess "You must pass a HASH ref of attributes"
$role->SUPER::create(%options);
- my (%initialize_options) = @args;
+ my (%initialize_options) = %options;
delete @initialize_options{qw(
package
attributes
}
}
+ Class::MOP::weaken_metaclass($meta->name)
+ if $meta->is_anon_role;
+
return $meta;
}
=back
+=over 4
+
+=item B<create>
+
+=item B<create_anon_role>
+
+=item B<is_anon_role>
+
+=back
+
=head1 BUGS
All complex software has bugs lurking in it, and this module is no
=head1 COPYRIGHT AND LICENSE
-Copyright 2006-2008 by Infinity Interactive, Inc.
+Copyright 2006-2009 by Infinity Interactive, Inc.
L<http://www.iinteractive.com>