X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FClass.pm;h=9ede6f8a56a618221ad3fe86972e7307ff10b48a;hp=7084439fd4f13fa926ccfd34a239fee3a5b0620c;hb=53c495ce524c95ee0fc1ee13f20edeeb382ef89f;hpb=7a50b45027c9f7baad76cfce7f78c822bd38f0a7 diff --git a/lib/Mouse/Meta/Class.pm b/lib/Mouse/Meta/Class.pm index 7084439..9ede6f8 100644 --- a/lib/Mouse/Meta/Class.pm +++ b/lib/Mouse/Meta/Class.pm @@ -119,6 +119,8 @@ sub new_object { my $instance = bless {}, $self->name; + my @triggers_queue; + foreach my $attribute ($self->get_all_attributes) { my $from = $attribute->init_arg; my $key = $attribute->name; @@ -134,7 +136,7 @@ sub new_object { if ref($instance->{$key}) && $attribute->is_weak_ref; if ($attribute->has_trigger) { - $attribute->trigger->($instance, $args{$from}); + push @triggers_queue, [ $attribute->trigger, $args{$from} ]; } } else { @@ -165,6 +167,12 @@ sub new_object { } } } + + foreach my $trigger_and_value(@triggers_queue){ + my($trigger, $value) = @{$trigger_and_value}; + $trigger->($instance, $value); + } + return $instance; }