=head1 DESCRIPTION
-The Moose cookbook is a series of recipes taken from the Moose
-test suite. Each recipe presents some code, which demonstrates
-some of the features of Moose, and then proceeds to explain the
-details of the code.
+The Moose cookbook is a series of recipes showing various Moose
+features. Most recipes present some code demonstrating some feature,
+and then explain the details of the code.
-We also provide a L<Moose::Cookbook::FAQ> and a L<Moose::Cookbook::WTF>
-for common questions and problems people have with Moose.
+You should probably read the L<Moose::Manual> first. The manual
+explains Moose concepts without being too code-heavy.
=head1 RECIPES
=head2 Basic Moose
-These recipes will give you a good idea of what Moose is capable,
-starting with simple attribute declaration, and moving on to more
-powerful features like laziness, types, type coercion, method
-modifiers, and more.
+These recipes will give you a good overview of Moose's capabilities, starting
+with simple attribute declaration, and moving on to more powerful features like
+laziness, types, type coercion, method modifiers, and more.
=over 4
=item L<Moose::Cookbook::Basics::Recipe1> - The (always classic) B<Point> example
-A simple Moose-based class. Demonstrated Moose attributes and subclassing.
+A simple Moose-based class. Demonstrates Moose attributes and subclassing.
=item L<Moose::Cookbook::Basics::Recipe2> - A simple B<BankAccount> example
=item L<Moose::Cookbook::Basics::Recipe3> - A lazy B<BinaryTree> example
Demonstrates several attribute features, including types, weak
-references, predicates ("does this object have a foo?"), defaults, and
-lazy attribute uction.
+references, predicates ("does this object have a foo?"), defaults,
+laziness, and triggers.
=item L<Moose::Cookbook::Basics::Recipe4> - Subtypes, and modeling a simple B<Company> class hierarchy
Making a class immutable greatly increases the speed of accessors and
object construction.
-=item L<Moose::Cookbook::Basics::Recipe8> - Managing complex relations with trigger (TODO)
-
-I<abstract goes here>
-
-Work off of this http://code2.0beta.co.uk/moose/svn/Moose/trunk/t/200_examples/007_Child_Parent_attr_inherit.t
-
-=item L<Moose::Cookbook::Basics::Recipe9> - Builder methods and lazy_build
+=item L<Moose::Cookbook::Basics::Recipe8> - Builder methods and lazy_build
The builder feature provides an inheritable and role-composable way to
provide a default attribute value.
-=item L<Moose::Cookbook::Basics::Recipe10> - Operator overloading, subtypes, and coercion
+=item L<Moose::Cookbook::Basics::Recipe9> - Operator overloading, subtypes, and coercion
Demonstrates using operator overloading, coercion, and subtypes to
model how eye color is determined during reproduction.
-=item L<Moose::Cookbook::Basics::Recipe11> - BUILD and BUILDARGS (TODO)
+=item L<Moose::Cookbook::Basics::Recipe10> - Using BUILDARGS and BUILD to hook into object construction
-We need a good recipe demonstrating how these work.
+This recipe demonstrates the use of C<BUILDARGS> and C<BUILD> to hook
+into object construction.
+
+=item L<Moose::Cookbook::Basics::Recipe11> - Extending a non-Moose base class
+
+In this recipe, we make a Moose-based subclass of L<DateTime>, a
+module which does not use Moose itself.
=back
=item L<Moose::Cookbook::Roles::Recipe2> - Advanced Role Composition - method exclusion and aliasing
Sometimes you just want to include part of a role in your
-class. Sometimes you want the whole role but one if its methods
+class. Sometimes you want the whole role but one of its methods
conflicts with one in your class. With method exclusion and aliasing,
you can work around these problems.
-=item L<Moose::Cookbook::Roles::Recipe3> - Runtime Role Composition (TODO)
+=item L<Moose::Cookbook::Roles::Recipe3> - Applying a role to an object instance
-I<abstract goes here>
+In this recipe, we apply a role to an existing object instance.
=back
=head2 Meta Moose
These recipes show you how to write your own meta classes, which lets
-you extend the object system provide by Moose.
+you extend the object system provided by Moose.
=over 4
=item L<Moose::Cookbook::Meta::Recipe5> - The "table" attribute implemented as a metaclass trait
-This example takes the class metaclass we saw in the previous recipe
+This recipe takes the class metaclass we saw in the previous recipe
and reimplements it as a metaclass trait.
-=item L<Moose::Cookbook::Meta::Recipe6> - Hooking into the immutabilization system (TODO)
+=item L<Moose::Cookbook::Meta::Recipe6> - A method metaclass for marking methods public or private
+
+This recipe shows a custom method metaclass that implements making a
+method private.
+
+=item L<Moose::Cookbook::Meta::Recipe7> - Using a blessed array reference as an object instance
+
+This recipe shows an example of how you create your own meta-instance
+class. The meta-instance determines the internal structure of object
+instances and provide access to attribute slots.
+
+=item Moose::Cookbook::Meta::Recipe8 - Hooking into immutabilization (TODO)
Moose has a feature known as "immutabilization". By calling C<<
__PACKAGE__->meta()->make_immutable() >> after defining your class
This recipe shows you how to write extensions which immutabilize
properly.
-=item L<Moose::Cookbook::Meta::Recipe7> - I<meta-instance> (TODO)
-
-I<abstract goes here>
-
=back
=head2 Extending Moose
=item L<Moose::Cookbook::Extending::Recipe1> - Moose extension overview
-There are quite a number of ways to extend Moose. This recipe explains
-provides an overview of each method, and provides recommendations for
-when each is appropriate.
+There are quite a few ways to extend Moose. This recipe provides an
+overview of each method, and provides recommendations for when each is
+appropriate.
=item L<Moose::Cookbook::Extending::Recipe2> - Providing a base object class role