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=b5adde838c6b897805364c8ba77035b53b8587ff;hp=ca8676a197a37b4afbe28265307479096d92c9c5;hb=ffbbf459fec594dcd08b5f7d05014740390bde58;hpb=0449307510ab4425a6b340fee9bf85824eb994b1 diff --git a/lib/Mouse/Meta/Class.pm b/lib/Mouse/Meta/Class.pm index ca8676a..b5adde8 100644 --- a/lib/Mouse/Meta/Class.pm +++ b/lib/Mouse/Meta/Class.pm @@ -171,18 +171,13 @@ sub _initialize_instance{ my $key = $attribute->name; if (defined($from) && exists($args->{$from})) { - $args->{$from} = $attribute->coerce_constraint($args->{$from}) - if $attribute->should_coerce; - - $attribute->verify_against_type_constraint($args->{$from}); - - $instance->{$key} = $args->{$from}; + $instance->{$key} = $attribute->_coerce_and_verify($args->{$from}); weaken($instance->{$key}) if ref($instance->{$key}) && $attribute->is_weak_ref; if ($attribute->has_trigger) { - push @triggers_queue, [ $attribute->trigger, $args->{$from} ]; + push @triggers_queue, [ $attribute->trigger, $instance->{$from} ]; } } else { @@ -443,7 +438,7 @@ Mouse::Meta::Class - The Mouse class metaclass =head2 C<< initialize(ClassName) -> Mouse::Meta::Class >> -Finds or creates a Mouse::Meta::Class instance for the given ClassName. Only +Finds or creates a C instance for the given ClassName. Only one instance should exist for a given class. =head2 C<< name -> ClassName >> @@ -454,30 +449,55 @@ Returns the name of the owner class. Gets (or sets) the list of superclasses of the owner class. -=head2 C<< add_attribute(name => spec | Mouse::Meta::Attribute) >> +=head2 C<< add_method(name => CodeRef) >> -Begins keeping track of the existing L for the owner -class. +Adds a method to the owner class. -=head2 C<< get_all_attributes -> (Mouse::Meta::Attribute) >> +=head2 C<< has_method(name) -> Bool >> -Returns the list of all L instances associated with -this class and its superclasses. +Returns whether we have a method with the given name. -=head2 C<< get_attribute_list -> { name => Mouse::Meta::Attribute } >> +=head2 C<< get_method(name) -> Mouse::Meta::Method | undef >> -This returns a list of attribute names which are defined in the local -class. If you want a list of all applicable attributes for a class, -use the C method. +Returns a L with the given name. + +Note that you can also use C<< $metaclass->name->can($name) >> for a method body. + +=head2 C<< get_method_list -> Names >> + +Returns a list of method names which are defined in the local class. +If you want a list of all applicable methods for a class, use the +C method. + +=head2 C<< get_all_methods -> (Mouse::Meta::Method) >> + +Return the list of all L instances associated with +the class and its superclasses. + +=head2 C<< add_attribute(name => spec | Mouse::Meta::Attribute) >> + +Begins keeping track of the existing L for the owner +class. =head2 C<< has_attribute(Name) -> Bool >> Returns whether we have a L with the given name. -=head2 get_attribute Name -> Mouse::Meta::Attribute | undef +=head2 C<< get_attribute Name -> Mouse::Meta::Attribute | undef >> Returns the L with the given name. +=head2 C<< get_attribute_list -> Names >> + +Returns a list of attribute names which are defined in the local +class. If you want a list of all applicable attributes for a class, +use the C method. + +=head2 C<< get_all_attributes -> (Mouse::Meta::Attribute) >> + +Returns the list of all L instances associated with +this class and its superclasses. + =head2 C<< linearized_isa -> [ClassNames] >> Returns the list of classes in method dispatch order, with duplicates removed. @@ -488,12 +508,18 @@ Creates a new instance. =head2 C<< clone_object(Instance, Parameters) -> Instance >> -Clones the given C which must be an instance governed by this +Clones the given instance which must be an instance governed by this metaclass. +=head2 C<< throw_error(Message, Parameters) >> + +Throws an error with the given message. + =head1 SEE ALSO L +L + =cut