Tidy the code (and clean up rampant wacky whitespace for RT 40432)
[gitmo/Moose.git] / lib / Moose / Cookbook / Basics / Recipe6.pod
CommitLineData
a909a4df 1
2=pod
3
4=head1 NAME
5
021b8139 6Moose::Cookbook::Basics::Recipe6 - The augment/inner example
a909a4df 7
8=head1 SYNOPSIS
f1c9feb4 9
a909a4df 10 package Document::Page;
11 use Moose;
f1c9feb4 12
13 has 'body' => ( is => 'rw', isa => 'Str', default => sub {''} );
14
a909a4df 15 sub create {
16 my $self = shift;
17 $self->open_page;
18 inner();
19 $self->close_page;
20 }
f1c9feb4 21
22 sub append_body {
23 my ( $self, $appendage ) = @_;
24 $self->body( $self->body . $appendage );
a909a4df 25 }
f1c9feb4 26
d876e049 27 sub open_page { (shift)->append_body('<page>') }
f1c9feb4 28 sub close_page { (shift)->append_body('</page>') }
29
d876e049 30 package Document::PageWithHeadersAndFooters;
a909a4df 31 use Moose;
f1c9feb4 32
a909a4df 33 extends 'Document::Page';
f1c9feb4 34
d876e049 35 augment 'create' => sub {
a909a4df 36 my $self = shift;
37 $self->create_header;
38 inner();
39 $self->create_footer;
d876e049 40 };
f1c9feb4 41
a909a4df 42 sub create_header { (shift)->append_body('<header/>') }
f1c9feb4 43 sub create_footer { (shift)->append_body('<footer/>') }
44
d876e049 45 package TPSReport;
a909a4df 46 use Moose;
f1c9feb4 47
d876e049 48 extends 'Document::PageWithHeadersAndFooters';
f1c9feb4 49
d876e049 50 augment 'create' => sub {
a909a4df 51 my $self = shift;
52 $self->create_tps_report;
53 };
f1c9feb4 54
a909a4df 55 sub create_tps_report {
f1c9feb4 56 (shift)->append_body('<report type="tps"/>');
a909a4df 57 }
f1c9feb4 58
59 # <page><header/><report type="tps"/><footer/></page>
60 print TPSReport->new->create;
a909a4df 61
62=head1 DESCRIPTION
63
7125b244 64Coming Soon.
65
a909a4df 66=head1 CONCLUSION
67
68=head1 FOOTNOTES
69
70=over 4
71
72=back
73
74=head1 AUTHOR
75
76Stevan Little E<lt>stevan@iinteractive.comE<gt>
77
78=head1 COPYRIGHT AND LICENSE
79
7125b244 80Copyright 2007 by Infinity Interactive, Inc.
a909a4df 81
82L<http://www.iinteractive.com>
83
84This library is free software; you can redistribute it and/or modify
85it under the same terms as Perl itself.
86
87=cut