use Moose::Role;
-
-after 'BUILDALL' => sub
-{
+after 'BUILDALL' => sub {
my $self = shift;
my $params = shift;
- my %attrs =
- ( map { $_ => 1 }
- grep { defined }
- map { $_->init_arg() }
- $self->meta()->compute_all_applicable_attributes()
- );
+ my %attrs = (
+ map { $_ => 1 }
+ grep {defined}
+ map { $_->init_arg() } $self->meta()->get_all_attributes()
+ );
- my @bad = sort grep { ! $attrs{$_} } keys %{ $params };
+ my @bad = sort grep { !$attrs{$_} } keys %{$params};
- if (@bad)
- {
- confess "Found unknown attribute(s) init_arg passed to the constructor: @bad";
+ if (@bad) {
+ confess
+ "Found unknown attribute(s) init_arg passed to the constructor: @bad";
}
return;
1;
+# ABSTRACT: A role which implements a strict constructor for Moose::Object
+
__END__
=pod
-=head1 NAME
+=head1 SYNOPSIS
-MooseX::Object::StrictConstructor - Implements strict constructors as a Moose::Object subclass
+ Moose::Util::MetaRole::apply_base_class_roles
+ ( for_class => $caller,
+ roles =>
+ [ 'MooseX::StrictConstructor::Role::Object' ],
+ );
=head1 DESCRIPTION
-This class has no external interface. When you use
-C<MooseX::StrictConstructor>, your objects will subclass this class
-rather than Moose::Object.
-
-=head1 AUTHOR
-
-Dave Rolsky, C<< <autarch@urth.org> >>
-
-=head1 COPYRIGHT & LICENSE
-
-Copyright 2007 Dave Rolsky, All Rights Reserved.
-
-This program is free software; you can redistribute it and/or modify
-it under the same terms as Perl itself.
+When you use C<MooseX::StrictConstructor>, your objects will have this
+role applied to them. It provides a method modifier for C<BUILDALL()>
+from C<Moose::Object> that implements strict argument checking for
+your class.
=cut