X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FCookbook%2FSnack%2FKeywords.pod;h=e3bc24fb9432bee8e0bb86002d3aa8ff1163792a;hb=eec1183467e5fc6f53c59350ab69ec514c7b0260;hp=11178a3cce7786cbc5614e5f9fc0901bd6235495;hpb=4499a7ab1162076b17829ac96608ce389e96021a;p=gitmo%2FMoose.git diff --git a/lib/Moose/Cookbook/Snack/Keywords.pod b/lib/Moose/Cookbook/Snack/Keywords.pod index 11178a3..e3bc24f 100644 --- a/lib/Moose/Cookbook/Snack/Keywords.pod +++ b/lib/Moose/Cookbook/Snack/Keywords.pod @@ -2,82 +2,82 @@ =head1 NAME -Moose::Cookbook::Snack::Keywords - Restricted keywords in Moose - -=cut +Moose::Cookbook::Snack::Keywords - Restricted "keywords" in Moose =head1 DESCRIPTION -There are several keywords exported in L that cause clashes against -any barewords such as attribute names, sub names, and globs. - +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. +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 Moose its best to avoid these keywords +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 make_immutable +=item confess -=item confess - -=item blessed +=item blessed =back -=head2 Moose::Util::TypeConstraints Keywords +=head2 Moose::Util::TypeConstraints Keywords -If you are using Moose::Util::TypeConstraints 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 maybe_type -=item as +=item as -=item where +=item where -=item message +=item message =item optimize_as -=item coerce +=item coerce -=item from +=item from =item via @@ -90,43 +90,83 @@ these keywords =back =head2 Avoiding collisions - + =head3 Turning off Moose -To remove the keywords Moose exports using no Moose at the bottom of your code +To remove the sugar functions L exports just add C> +at the bottom of your code: - package Thing; - use Moose; + package Thing; + use Moose; - # code here + # code here - no Moose; + no Moose; -=head3 Sub::Exporter +This will unexport the sugar functions that L originally +exported. The same will also work for L and +L. -The L module can rename keywords +=head3 Sub::Exporter features - package LOL::Cat; - use Moose 'has' => { -as => 'i_can_haz' }; +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. - i_can_haz 'cheeseburger' => ( - is => 'rw', - trigger => sub { print "NOM NOM" } - ); +For instance, with L you can rename keywords, like so: - LOL::Cat->new->cheeseburger('KTHNXBYE');; + package LOL::Cat; + use Moose 'has' => { -as => 'i_can_haz' }; + + i_can_haz 'cheeseburger' => ( + is => 'rw', + trigger => sub { print "NOM NOM" } + ); + + LOL::Cat->new->cheeseburger('KTHNXBYE'); + +See the L docs for more information. =head3 namespace::clean -You can use L to clean up the namespace +You can also use L to clean up your namespace, but +you must be careful not to remove C when doing so: -=head1 AUTHOR AND COPYRIGHT + package Foo; + use Moose; + use namespace::clean -except => 'meta'; + # ... + +=head1 SEE ALSO + +=over 4 + +=item L + +=item L + +=item L + +=item L + +=item L + +=back + +=head1 AUTHOR John Goulah Cjgoulah@cpan.org> -=head1 LICENSE +Stevan Little Estevan@iinteractive.comE + +=head1 COPYRIGHT AND LICENSE + +Copyright 2006-2009 by Infinity Interactive, Inc. + +L -This program is free software; you can redistribute it and/or modify -it under the same terms as perl itself. +This library is free software; you can redistribute it and/or modify +it under the same terms as Perl itself. =cut