Catalyst-TraitFor-View-MarkupValidation

 view release on metacpan or  search on metacpan

lib/Catalyst/TraitFor/View/MarkupValidation.pm  view on Meta::CPAN

Catalyst::TraitFor::View::MarkupValidation - Validates output and replaces it with an error report if not OK

=head1 SYNOPSIS

    package Catalyst::View::Validation;

    use Moose;
    use namespace::autoclean;

    extends qw/Catalyst::View::TT/;
    with qw/Catalyst::TraitFor::View::MarkupValidation/;

    __PACKAGE__->config(MARKUP_VALIDATOR_URI => q[http://localhost/w3c-validator/check]);

    1;

=head1 DESCRIPTION

This is a Role which which takes generated content that is ready for output and
validates it. If there are errors it replaces the default output with an
error report.

=head1 CONFIGURATION

You must set the MARKUP_VALIDATOR_URI to the URI for an instance of the W3C
Markup Validation Service. You are encouraged to install a local instance of
the validator so that you see high levels of performance and do not hammer the
public server (which is funded by donations).

See L<http://validator.w3.org/source/> for downloads and installation instructions
on a variety of platforms.

=head1 CAVEATS

This is useful when you're developing your application, as it will identify
validity errors in the markup. In production, however, the performance cost is
likely to be too high, and throwing errors at users that browsers could
probably recover from is unfriendly.

This module checks that Catalyst is running in debug mode and will not run if
it is not.

=head1 METHOD MODIFIERS

=head2 after process

Validates document and (in event of an error) replaces it with an error report.

=head1 TODO

=over

=item Make document types that get validated configurable

=item Add line numbering to output

=item Hyperlink from error to source

=back

=head1 BUGS AND LIMITATIONS

Please report any you find using RT.

=over

=item If URI to validation service is incorrect, shows error report w/ 0 errors.

=back

=head1 AUTHOR

=over

=item David Dorward (dorward) C<< <david@dorward.me.uk> >>

=back

=head1 CONTRIBUTORS

=over

=item Tomas Doran (t0m) C<< <bobtfish@bobtfish.net> >>

=back

=head1 LICENSE AND COPYRIGHT

This module itself is copyright (c) 2009 David Dorward and is licensed under the
same terms as Perl itself.

=cut

__DATA__
<!doctype html>
<html>
    <head>
        <title>Error report</title>
        <style type="text/css">
        .DataType { color: red; }
        .Normal { color: black; }
        .Keyword { font-weight: bold; }
        .String { font-style: italic; }
        .Others { color: blue; }
        </style>
    </head>
    <body>
        <h1>Error report</h1>
        
        <table>
        <tr>
            <th scope="col">Line</th>
            <th scope="col">Col</th>
            <th scope="col">Error</th>
        </tr>
        [% FOREACH error = report %]
            <tr>
            <td>[% error.0 %]</td>
            <td>[% error.1 %]</td>
            <td>[% error.2 %]</td>
        </tr>



( run in 1.815 second using v1.01-cache-2.11-cpan-39bf76dae61 )