Add $ignore_triggers option to _initialize_object()
[gitmo/Mouse.git] / lib / Mouse / Meta / Class.pm
index d590b0c..75fd5af 100644 (file)
@@ -17,9 +17,9 @@ sub destructor_class()    { 'Mouse::Meta::Method::Destructor'  }
 sub _construct_meta {
     my($class, %args) = @_;
 
-    $args{attributes} ||= {};
-    $args{methods}    ||= {};
-    $args{roles}      ||= [];
+    $args{attributes} = {};
+    $args{methods}    = {};
+    $args{roles}      = [];
 
     $args{superclasses} = do {
         no strict 'refs';
@@ -154,23 +154,6 @@ sub compute_all_applicable_attributes {
     return shift->get_all_attributes(@_)
 }
 
-sub get_all_attributes {
-    my $self = shift;
-    my (@attr, %seen);
-
-    for my $class ($self->linearized_isa) {
-        my $meta = Mouse::Util::get_metaclass_by_name($class)
-            or next;
-
-        for my $name ($meta->get_attribute_list) {
-            next if $seen{$name}++;
-            push @attr, $meta->get_attribute($name);
-        }
-    }
-
-    return @attr;
-}
-
 sub linearized_isa;
 
 sub new_object {
@@ -184,7 +167,7 @@ sub new_object {
 }
 
 sub _initialize_object{
-    my($self, $object, $args) = @_;
+    my($self, $object, $args, $ignore_triggers) = @_;
 
     my @triggers_queue;
 
@@ -225,9 +208,11 @@ sub _initialize_object{
         }
     }
 
-    foreach my $trigger_and_value(@triggers_queue){
-        my($trigger, $value) = @{$trigger_and_value};
-        $trigger->($object, $value);
+    if(!$ignore_triggers){
+        foreach my $trigger_and_value(@triggers_queue){
+            my($trigger, $value) = @{$trigger_and_value};
+            $trigger->($object, $value);
+        }
     }
 
     if($self->is_anon_class){