2 package Moose::Meta::Class;
11 use base 'Class::MOP::Class';
13 sub construct_instance {
14 my ($class, %params) = @_;
15 my $instance = $params{'__INSTANCE__'} || {};
16 foreach my $attr ($class->compute_all_applicable_attributes()) {
17 my $init_arg = $attr->init_arg();
18 # try to fetch the init arg from the %params ...
20 $val = $params{$init_arg} if exists $params{$init_arg};
21 # if nothing was in the %params, we can use the
22 # attribute's default value (if it has one)
23 $val ||= $attr->default($instance) if $attr->has_default;
25 if ($attr->has_coercion) {
26 $val = $attr->coerce->($val);
28 if ($attr->has_type_constraint) {
29 (defined($attr->type_constraint->($val)))
30 || confess "Attribute () does not pass the type contraint with";
33 $instance->{$attr->name} = $val;
46 Moose::Meta::Class - The Moose metaclass
52 This is a subclass of L<Class::MOP::Class> with Moose specific
59 =item B<construct_instance>
67 All complex software has bugs lurking in it, and this module is no
68 exception. If you find a bug please either email me, or add the bug
73 Stevan Little E<lt>stevan@iinteractive.comE<gt>
75 =head1 COPYRIGHT AND LICENSE
77 Copyright 2006 by Infinity Interactive, Inc.
79 L<http://www.iinteractive.com>
81 This library is free software; you can redistribute it and/or modify
82 it under the same terms as Perl itself.