X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FMethod%2FDestructor.pm;h=610898d9b837055e5eedcdad491511ba38ff1519;hb=a3319906531cef2b41a87138e75461ced7a3394b;hp=db82b1f550895246a8356467a8185b126b47d9c3;hpb=a7be0f8593e4e7b7f570f49027ee4f8f25d4d8bc;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/Method/Destructor.pm b/lib/Moose/Meta/Method/Destructor.pm index db82b1f..610898d 100644 --- a/lib/Moose/Meta/Method/Destructor.pm +++ b/lib/Moose/Meta/Method/Destructor.pm @@ -6,7 +6,7 @@ use warnings; use Scalar::Util 'blessed', 'weaken'; -our $VERSION = '0.69'; +our $VERSION = '0.73_01'; $VERSION = eval $VERSION; our $AUTHORITY = 'cpan:STEVAN'; @@ -46,20 +46,18 @@ sub new { ## accessors sub options { (shift)->{'options'} } -sub associated_metaclass { (shift)->{'associated_metaclass'} } ## method -sub is_needed { - my $self = shift; - # if called as a class method - # then must pass in a class name - unless (blessed $self) { - (blessed $_[0] && $_[0]->isa('Class::MOP::Class')) - || $self->throw_error("When calling is_needed as a class method you must pass a class name"); - return $_[0]->meta->can('DEMOLISH'); - } - defined $self->{'body'} ? 1 : 0 +sub is_needed { + my $self = shift; + my $metaclass = shift; + + ( blessed $metaclass && $metaclass->isa('Class::MOP::Class') ) + || $self->throw_error( + "The is_needed method expected a metaclass object as its arugment"); + + return Class::MOP::class_of($metaclass)->can('DEMOLISH'); } sub initialize_body { @@ -109,28 +107,49 @@ Moose::Meta::Method::Destructor - Method Meta Object for destructors =head1 DESCRIPTION -This is a subclass of L which handles -constructing an appropriate Destructor method. This is primarily -used in the making of immutable metaclasses, otherwise it is -not particularly useful. +This class is a subclass of L that +provides Moose-specific functionality for inlining destructors. + +To understand this class, you should read the the +L documentation as well. + +=head1 INHERITANCE + +C is a subclass of +L I L. =head1 METHODS =over 4 -=item B +=item B<< Moose::Meta;:Method::Destructor->new(%options) >> -=item B +This constructs a new object. It accepts the following options: -=item B +=over 8 -=item B +=item * package_name -=item B +The package for the class in which the destructor is being +inlined. This option is required. + +=item * name + +The name of the destructor method. This option is required. + +=item * metaclass + +The metaclass for the class this destructor belongs to. This is +optional, as it can be set later by calling C<< +$metamethod->attach_to_class >>. + +=back -=item B +=item B<< Moose::Meta;:Method::Destructor->is_needed($metaclass) >> -=item B +Given a L object, this method returns a boolean +indicating whether the class needs a destructor. If the class or any +of its parents defines a C method, it needs a destructor. =back