Reorganized all the recipes so they're broken into subsections, and
[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
021b8139 69=item L<Moose::Cookbook::Basics::Recipe10> - Create Humans and their Spawn
c2a0627f 70
71Shows how operator overloading, coercion, and sub types can be used
72to mimmick the human reproductive system (well, the selection of genes
73at least). Assumes a basic understanding of Moose.
74
496b74ab 75=back
76
77=head2 Moose Roles
78
79=over 4
80
021b8139 81=item L<Moose::Cookbook::Role::Recipe1> - The Moose::Role example
496b74ab 82
f7f3648d 83Demonstrates roles, which are also sometimes known as traits or
84mix-ins. Roles provide a method of code re-use which is orthogonal to
85subclassing.
cb2478d4 86
021b8139 87=item L<Moose::Cookbook::Role::Recipe2> - Advanced Role Composition - method exclusion and aliasing
496b74ab 88
2e3d0a0a 89Sometimes you just want to include part of a role in your
90class. Sometimes you want the whole role but one if its methods
91conflicts with one in your class. With method exclusion and aliasing,
92you can work around these problems.
cb2478d4 93
021b8139 94=item L<Moose::Cookbook::Role::Recipe3> - Runtime Role Composition (TODO)
104379bc 95
cb2478d4 96I<abstract goes here>
97
496b74ab 98=back
99
100=head2 Meta Moose
101
102=over 4
103
021b8139 104=item L<Moose::Cookbook::Meta::Recipe1> - Welcome to the meta-world (TODO)
496b74ab 105
cb2478d4 106I<abstract goes here>
107
021b8139 108=item L<Moose::Cookbook::Meta::Recipe2> - The meta-attribute example
496b74ab 109
f7f3648d 110One way to extend Moose is to provide your own attribute
111metaclasses. Attribute metaclasses let you extend attribute
112declarations (with C<has>) and behavior to provide additional
113attribute functionality.
cb2478d4 114
021b8139 115=item L<Moose::Cookbook::Meta::Recipe3> - The meta-attribute trait example
a7d0cd00 116
aff0421c 117Extending Moose's attribute metaclass is a great way to add
118functionality. However, attributes can only have one metaclass.
119Applying roles to the attribute metaclass lets you provide
120composable attribute functionality.
cb2478d4 121
021b8139 122=item L<Moose::Cookbook::Meta::Recipe4> - The meta-instance example (TODO)
24a8fe99 123
cb2478d4 124I<abstract goes here>
125
496b74ab 126=item L<Moose::Cookbook::Recipe24> - The meta-class example (TODO)
1edfdf1c 127
cb2478d4 128I<abstract goes here>
129
130=back
131
132=head1 SNACKS
133
134=over 4
135
136=item L<Moose::Cookbook::Snack::Types>
137
471c4f09 138=back
139
140=head1 SEE ALSO
141
142=over 4
143
8bdc7f13 144=item L<http://www.gsph.com/index.php?Lang=En&ID=291>
471c4f09 145
146=back
147
148=head1 AUTHOR
149
150Stevan Little E<lt>stevan@iinteractive.comE<gt>
151
152=head1 COPYRIGHT AND LICENSE
153
778db3ac 154Copyright 2006-2008 by Infinity Interactive, Inc.
471c4f09 155
156L<http://www.iinteractive.com>
157
158This library is free software; you can redistribute it and/or modify
159it under the same terms as Perl itself.
160
f7f3648d 161=cut