X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FCookbook%2FSnack%2FKeywords.pod;h=e3bc24fb9432bee8e0bb86002d3aa8ff1163792a;hb=c305a605cddbd97089f240ad9908a92bb1fa9828;hp=98af71cd8a5bb975eb069daeb57bbd02f5be2426;hpb=48c9a9c0d0f40173efcf2e6a7c801d65b82916db;p=gitmo%2FMoose.git diff --git a/lib/Moose/Cookbook/Snack/Keywords.pod b/lib/Moose/Cookbook/Snack/Keywords.pod index 98af71c..e3bc24f 100644 --- a/lib/Moose/Cookbook/Snack/Keywords.pod +++ b/lib/Moose/Cookbook/Snack/Keywords.pod @@ -2,79 +2,82 @@ =head1 NAME -Moose::Cookbook::Snack::Keywords - Restricted keywords in Moose +Moose::Cookbook::Snack::Keywords - Restricted "keywords" in Moose =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. +While most collisions can be avoided, you cannot avoid importing a +C method when you C>. If you try to override or +change what C does, you could end up breaking Moose internals. -=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 as -=item message +=item where + +=item message =item optimize_as -=item coerce +=item coerce -=item from +=item from =item via @@ -90,8 +93,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 +103,35 @@ 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 -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, but +you must be careful not to remove C when doing so: package Foo; use Moose; @@ -158,7 +162,7 @@ Stevan Little Estevan@iinteractive.comE =head1 COPYRIGHT AND LICENSE -Copyright 2006-2008 by Infinity Interactive, Inc. +Copyright 2006-2009 by Infinity Interactive, Inc. L