Add new Meta::Recipe1 to changes
[gitmo/Moose.git] / lib / Moose / Cookbook.pod
CommitLineData
471c4f09 1
2=pod
3
4=head1 NAME
5
6Moose::Cookbook - How to cook a Moose
7
8=head1 DESCRIPTION
9
4711f5f7 10The Moose cookbook is a series of recipes taken from the Moose
471c4f09 11test suite. Each recipe presents some code, which demonstrates
12some of the features of Moose, and then proceeds to explain the
13details of the code.
14
734d1752 15We also provide a L<Moose::Cookbook::FAQ> and a L<Moose::Cookbook::WTF>
16for common questions and problems people have with Moose.
17
471c4f09 18=head1 RECIPES
19
496b74ab 20=head2 Basic Moose
21
471c4f09 22=over 4
23
021b8139 24=item L<Moose::Cookbook::Basics::Recipe1> - The (always classic) B<Point> example
471c4f09 25
f7f3648d 26A simple Moose-based class. Demonstrated Moose attributes and subclassing.
cb2478d4 27
021b8139 28=item L<Moose::Cookbook::Basics::Recipe2> - A simple B<BankAccount> example
471c4f09 29
f7f3648d 30A slightly more complex Moose class. Demonstrates using a method
31modifier in a subclass.
cb2478d4 32
021b8139 33=item L<Moose::Cookbook::Basics::Recipe3> - A lazy B<BinaryTree> example
471c4f09 34
f7f3648d 35Demonstrates several attribute features, including types, weak
36references, predicates ("does this object have a foo?"), defaults, and
37lazy attribute construction.
cb2478d4 38
021b8139 39=item L<Moose::Cookbook::Basics::Recipe4> - Subtypes, and modeling a simple B<Company> class hierarchy
471c4f09 40
f7f3648d 41Introduces the creation and use of custom types, a C<BUILD> method,
42and the use of C<override> in a subclass.
cb2478d4 43
021b8139 44=item L<Moose::Cookbook::Basics::Recipe5> - More subtypes, coercion in a B<Request> class
471c4f09 45
f7f3648d 46More type examples, including the use of type coercions.
cb2478d4 47
021b8139 48=item L<Moose::Cookbook::Basics::Recipe6> - The augment/inner example
496b74ab 49
f7f3648d 50Demonstrates the use of C<augment> method modifiers, a way of turning
51the usual method overriding style "inside-out".
cb2478d4 52
021b8139 53=item L<Moose::Cookbook::Basics::Recipe7> - Making Moose fast with immutable
496b74ab 54
5de2944f 55Making a class immutable greatly increases the speed of accessors and
56object construction.
cb2478d4 57
021b8139 58=item L<Moose::Cookbook::Basics::Recipe8> - Managing complex relations with trigger (TODO)
496b74ab 59
cb2478d4 60I<abstract goes here>
61
2be55428 62Work off of this http://code2.0beta.co.uk/moose/svn/Moose/trunk/t/200_examples/007_Child_Parent_attr_inherit.t
63
021b8139 64=item L<Moose::Cookbook::Basics::Recipe9> - Builder methods and lazy_build
496b74ab 65
fbd7ad7a 66The builder feature provides an inheritable and role-composable way to
67provide a default attribute value.
cb2478d4 68
58d129ba 69=item L<Moose::Cookbook::Basics::Recipe10> - Operator overloading, subtypes, and coercion
c2a0627f 70
58d129ba 71Demonstrates how operator overloading, coercion, and sub types can be
72used to model how eye color is determined during reproduction.
c2a0627f 73
496b74ab 74=back
75
76=head2 Moose Roles
77
78=over 4
79
021b8139 80=item L<Moose::Cookbook::Role::Recipe1> - The Moose::Role example
496b74ab 81
f7f3648d 82Demonstrates roles, which are also sometimes known as traits or
83mix-ins. Roles provide a method of code re-use which is orthogonal to
84subclassing.
cb2478d4 85
021b8139 86=item L<Moose::Cookbook::Role::Recipe2> - Advanced Role Composition - method exclusion and aliasing
496b74ab 87
2e3d0a0a 88Sometimes you just want to include part of a role in your
89class. Sometimes you want the whole role but one if its methods
90conflicts with one in your class. With method exclusion and aliasing,
91you can work around these problems.
cb2478d4 92
021b8139 93=item L<Moose::Cookbook::Role::Recipe3> - Runtime Role Composition (TODO)
104379bc 94
cb2478d4 95I<abstract goes here>
96
496b74ab 97=back
98
99=head2 Meta Moose
100
101=over 4
102
17a65b17 103=item L<Moose::Cookbook::Meta::Recipe1> - Welcome to the meta-world (Why Go Meta?)
496b74ab 104
cb2478d4 105I<abstract goes here>
106
021b8139 107=item L<Moose::Cookbook::Meta::Recipe2> - The meta-attribute example
496b74ab 108
f7f3648d 109One way to extend Moose is to provide your own attribute
110metaclasses. Attribute metaclasses let you extend attribute
111declarations (with C<has>) and behavior to provide additional
112attribute functionality.
cb2478d4 113
021b8139 114=item L<Moose::Cookbook::Meta::Recipe3> - The meta-attribute trait example
a7d0cd00 115
aff0421c 116Extending Moose's attribute metaclass is a great way to add
117functionality. However, attributes can only have one metaclass.
118Applying roles to the attribute metaclass lets you provide
119composable attribute functionality.
cb2478d4 120
021b8139 121=item L<Moose::Cookbook::Meta::Recipe4> - The meta-instance example (TODO)
24a8fe99 122
cb2478d4 123I<abstract goes here>
124
496b74ab 125=item L<Moose::Cookbook::Recipe24> - The meta-class example (TODO)
1edfdf1c 126
cb2478d4 127I<abstract goes here>
128
129=back
130
131=head1 SNACKS
132
133=over 4
134
135=item L<Moose::Cookbook::Snack::Types>
136
471c4f09 137=back
138
139=head1 SEE ALSO
140
141=over 4
142
8bdc7f13 143=item L<http://www.gsph.com/index.php?Lang=En&ID=291>
471c4f09 144
145=back
146
147=head1 AUTHOR
148
149Stevan Little E<lt>stevan@iinteractive.comE<gt>
150
151=head1 COPYRIGHT AND LICENSE
152
778db3ac 153Copyright 2006-2008 by Infinity Interactive, Inc.
471c4f09 154
155L<http://www.iinteractive.com>
156
157This library is free software; you can redistribute it and/or modify
158it under the same terms as Perl itself.
159
f7f3648d 160=cut