more refactoring to prep for class attrs in roles
Dave Rolsky [Wed, 20 Jan 2010 22:29:08 +0000 (16:29 -0600)]
lib/MooseX/ClassAttribute/Role/Meta/Class.pm
lib/MooseX/ClassAttribute/Role/Meta/Mixin/HasClassAttributes.pm

index e51d0a6..8ec293b 100644 (file)
@@ -110,23 +110,18 @@ sub _process_inherited_class_attribute {
     return $inherited_attr->clone_and_inherit_options(%p);
 }
 
-sub remove_class_attribute {
+around remove_class_attribute => sub {
+    my $orig = shift;
     my $self = shift;
-    my $name = shift;
-
-    ( defined $name && $name )
-        || confess 'You must provide an attribute name';
 
-    my $removed_attr = $self->get_class_attribute($name);
-    return unless $removed_attr;
-
-    $self->_remove_class_attribute($name);
+    my $removed_attr = $self->$orig(@_)
+        or return;
 
     $removed_attr->remove_accessors();
     $removed_attr->detach_from_class();
 
     return $removed_attr;
-}
+};
 
 sub get_all_class_attributes {
     my $self = shift;
index 46b5a6e..1b7eb49 100644 (file)
@@ -57,4 +57,19 @@ sub add_class_attribute {
     return $attribute;
 }
 
+sub remove_class_attribute {
+    my $self = shift;
+    my $name = shift;
+
+    ( defined $name && $name )
+        || confess 'You must provide an attribute name';
+
+    my $removed_attr = $self->get_class_attribute($name);
+    return unless $removed_attr;
+
+    $self->_remove_class_attribute($name);
+
+    return $removed_attr;
+}
+
 1;