X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FCookbook%2FSnack%2FKeywords.pod;h=329ff32cead7923cdba8e762dfd31c5b87a9fe37;hb=01062d8a9c752c413210277e06128d4c87224e81;hp=132f5af52c85c02a22484a12e3aadabd8f776995;hpb=2840a3b25fac3ab606e2053ce9ef30b39687270d;p=gitmo%2FMoose.git diff --git a/lib/Moose/Cookbook/Snack/Keywords.pod b/lib/Moose/Cookbook/Snack/Keywords.pod index 132f5af..329ff32 100644 --- a/lib/Moose/Cookbook/Snack/Keywords.pod +++ b/lib/Moose/Cookbook/Snack/Keywords.pod @@ -1,80 +1,96 @@ -=pod +package Moose::Cookbook::Snack::Keywords; + +# ABSTRACT: Restricted "keywords" in Moose -=head1 NAME +__END__ -Moose::Cookbook::Snack::Keywords - Restricted keywords in Moose +=pod =head1 DESCRIPTION -There are several keywords exported by L that can cause clashes -against other user-defined barewords. The following document provides -a list of those keywords in a single place for easy reference. +Moose exports a number of sugar functions in order to emulate Perl +built-in keywords. These can cause clashes with other user-defined +functions. This document provides a list of those keywords for easy +reference. =head2 The 'meta' keyword -While most of the reserved keywords collisions can be avoided, however -I is the only one you B override. Do not attempt to override -I, it will break the Moose internals. +C> adds a method called C to your class. If this +conflicts with a method or function you are using, you can rename it, +or prevent it from being installed entirely. To do this, pass the +C<-meta_name> option when you C>. For instance: + + # install it under a different name + use Moose -meta_name => 'moose_meta'; + + # don't install it at all + use Moose -meta_name => undef; -=head2 Moose Keywords +=head2 Moose Keywords -If you are using L or L its best to avoid these +If you are using L or L its best to avoid these keywords: =over 4 -=item extends +=item extends -=item with +=item with -=item has +=item has -=item before +=item before -=item after +=item after -=item around +=item around -=item super +=item super -=item override +=item override -=item inner +=item inner -=item augment +=item augment -=item confess +=item confess -=item blessed +=item blessed =back -=head2 Moose::Util::TypeConstraints Keywords +=head2 Moose::Util::TypeConstraints Keywords -If you are using L its best to avoid -these keywords +If you are using L its best to avoid +these keywords =over 4 -=item type +=item type -=item subtype +=item subtype -=item class_type +=item class_type -=item role_type +=item role_type -=item as +=item maybe_type -=item where +=item duck_type -=item message +=item as + +=item where + +=item message =item optimize_as -=item coerce +=item inline_as + +=item coerce -=item from +=item from =item via @@ -90,8 +106,8 @@ these keywords =head3 Turning off Moose -To remove the keywords L exports just add C at the bottom of -your code, like so: +To remove the sugar functions L exports just add C> +at the bottom of your code: package Thing; use Moose; @@ -100,34 +116,41 @@ your code, like so: no Moose; -This will un-export the keywords that L originally exported. The same -will also work for L and L. It is -general L policy that this feature is used. +This will unexport the sugar functions that L originally +exported. The same will also work for L and +L. -=head3 Sub::Exporter +=head3 Sub::Exporter features -L, L and L all use -L to handle all their exporting needs. This means that all the -features that L provides are also available to them. +L, L and L all use +L to handle all their exporting needs. This means that +all the features that L provides are also available to +them. For instance, with L you can rename keywords, like so: package LOL::Cat; use Moose 'has' => { -as => 'i_can_haz' }; - + i_can_haz 'cheeseburger' => ( - is => 'rw', - trigger => sub { print "NOM NOM" } + is => 'rw', + trigger => sub { print "NOM NOM" } ); - + LOL::Cat->new->cheeseburger('KTHNXBYE'); See the L docs for more information. -=head3 namespace::clean +=head3 namespace::autoclean and namespace::clean -You can also use L to clean up your namespace, but you must -be careful not to remove C with this. Here is an example of that usage: +You can also use L to clean up your namespace. +This will remove all imported functions from your namespace. Note +that if you are importing functions that are intended to be used as +methods (this includes L, due to internal implementation +details), it will remove these as well. + +Another option is to use L directly, but +you must be careful not to remove C when doing so: package Foo; use Moose; @@ -146,23 +169,10 @@ be careful not to remove C with this. Here is an example of that usage: =item L +=item L + =item L =back -=head1 AUTHOR - -John Goulah Cjgoulah@cpan.org> - -Stevan Little Estevan@iinteractive.comE - -=head1 COPYRIGHT AND LICENSE - -Copyright 2006-2009 by Infinity Interactive, Inc. - -L - -This library is free software; you can redistribute it and/or modify -it under the same terms as Perl itself. - =cut