The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use MooseX::Declare;

class CatalystX::Declare::Keyword::View
    extends CatalystX::Declare::Keyword::Component {

    method default_superclasses { 'Catalyst::View' }
}

__END__

=head1 NAME

CatalystX::Declare::Keyword::View - Declare Catalyst Views

=head1 SYNOPSIS

    use CatalystX::Declare;

    view MyApp::Web::View::Example
        extends Catalyst::View::TT 
        with    MyApp::Web::ViewRole::Caching {

        after process (Object $ctx) {
            $ctx->log->debug('done processing at ' . time)
                if $ctx->debug;
        }
    }

=head1 DESCRIPTION

This handler is a direct extension of L<CatalystX::Declare::Keyword::Component>
and provides a C<view> keyword to declare a catalyst view. Currently, the only
things this declaration does is setting up a L<Moose> class like 
L<MooseX::Declare> does, provide L<CLASS> to its scope and default the 
superclass to L<Catalyst::View>.

See L<MooseX::Declare/class> for more information on this kind of keyword. 
Since views do not take actions, no special handling of roles is required, 
other than with controller roles. So if you want to write roles for views, 
simply use the L<MooseX::Declare/role> syntax.

=head1 SUPERCLASSES

=over

=item L<CatalystX::Declare::Keyword::Component>

=back

=head1 METHODS

These methods are implementation details. Unless you are extending or 
developing L<CatalystX::Declare>, you should not be concerned with them.

=head2 default_superclasses

    List[Str] Object->default_superclasses ()

Defaults to L<Catalyst::View>.

=head1 SEE ALSO

=over

=item L<CatalystX::Declare>

=item L<CatalystX::Declare::Keyword::Component>

=item L<MooseX::Declare/class>

=back

=head1 AUTHOR

See L<CatalystX::Declare/AUTHOR> for author information.

=head1 LICENSE

This program is free software; you can redistribute it and/or modify it under 
the same terms as perl itself.

=cut