Remove nothingmuch's nasty tabs ;)
[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
3824830b 24=item L<Moose::Cookbook::Recipe1> - The (always classic) B<Point> example
471c4f09 25
f7f3648d 26A simple Moose-based class. Demonstrated Moose attributes and subclassing.
cb2478d4 27
3824830b 28=item L<Moose::Cookbook::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
3824830b 33=item L<Moose::Cookbook::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
3824830b 39=item L<Moose::Cookbook::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
3824830b 44=item L<Moose::Cookbook::Recipe5> - More subtypes, coercion in a B<Request> class
471c4f09 45
f7f3648d 46More type examples, including the use of type coercions.
cb2478d4 47
496b74ab 48=item L<Moose::Cookbook::Recipe6> - The augment/inner example
49
f7f3648d 50Demonstrates the use of C<augment> method modifiers, a way of turning
51the usual method overriding style "inside-out".
cb2478d4 52
5de2944f 53=item L<Moose::Cookbook::Recipe7> - Making Moose fast with immutable
496b74ab 54
5de2944f 55Making a class immutable greatly increases the speed of accessors and
56object construction.
cb2478d4 57
2be55428 58=item L<Moose::Cookbook::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
ceb8945d 64=item L<Moose::Cookbook::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
496b74ab 69=back
70
71=head2 Moose Roles
72
73=over 4
74
75=item L<Moose::Cookbook::Recipe10> - The Moose::Role example
76
f7f3648d 77Demonstrates roles, which are also sometimes known as traits or
78mix-ins. Roles provide a method of code re-use which is orthogonal to
79subclassing.
cb2478d4 80
2e3d0a0a 81=item L<Moose::Cookbook::Recipe11> - Advanced Role Composition - method exclusion and aliasing
496b74ab 82
2e3d0a0a 83Sometimes you just want to include part of a role in your
84class. Sometimes you want the whole role but one if its methods
85conflicts with one in your class. With method exclusion and aliasing,
86you can work around these problems.
cb2478d4 87
104379bc 88=item L<Moose::Cookbook::Recipe12> - Runtime Role Composition (TODO)
89
cb2478d4 90I<abstract goes here>
91
496b74ab 92=back
93
94=head2 Meta Moose
95
96=over 4
97
98=item L<Moose::Cookbook::Recipe20> - Welcome to the meta-world (TODO)
99
cb2478d4 100I<abstract goes here>
101
496b74ab 102=item L<Moose::Cookbook::Recipe21> - The meta-attribute example
103
f7f3648d 104One way to extend Moose is to provide your own attribute
105metaclasses. Attribute metaclasses let you extend attribute
106declarations (with C<has>) and behavior to provide additional
107attribute functionality.
cb2478d4 108
aff0421c 109=item L<Moose::Cookbook::Recipe22> - The meta-attribute trait example
a7d0cd00 110
aff0421c 111Extending Moose's attribute metaclass is a great way to add
112functionality. However, attributes can only have one metaclass.
113Applying roles to the attribute metaclass lets you provide
114composable attribute functionality.
cb2478d4 115
496b74ab 116=item L<Moose::Cookbook::Recipe23> - The meta-instance example (TODO)
24a8fe99 117
cb2478d4 118I<abstract goes here>
119
496b74ab 120=item L<Moose::Cookbook::Recipe24> - The meta-class example (TODO)
1edfdf1c 121
cb2478d4 122I<abstract goes here>
123
124=back
125
126=head1 SNACKS
127
128=over 4
129
130=item L<Moose::Cookbook::Snack::Types>
131
471c4f09 132=back
133
134=head1 SEE ALSO
135
136=over 4
137
8bdc7f13 138=item L<http://www.gsph.com/index.php?Lang=En&ID=291>
471c4f09 139
140=back
141
142=head1 AUTHOR
143
144Stevan Little E<lt>stevan@iinteractive.comE<gt>
145
146=head1 COPYRIGHT AND LICENSE
147
778db3ac 148Copyright 2006-2008 by Infinity Interactive, Inc.
471c4f09 149
150L<http://www.iinteractive.com>
151
152This library is free software; you can redistribute it and/or modify
153it under the same terms as Perl itself.
154
f7f3648d 155=cut