diff options
author | ot <ot@localhost> | 2005-03-17 06:30:13 +0000 |
---|---|---|
committer | ot <ot@localhost> | 2005-03-17 06:30:13 +0000 |
commit | e8ce9503dd65ef81f915e077cbd131733cf7e600 (patch) | |
tree | 80b2ee15118747f0fd35f41ce1b5e19b35751036 /misc/docs_errors.pl | |
parent | 8e747e4bbc75963ea7310af50a3d4d22ea6ba4d8 (diff) | |
download | markup-validator-e8ce9503dd65ef81f915e077cbd131733cf7e600.zip markup-validator-e8ce9503dd65ef81f915e077cbd131733cf7e600.tar.gz markup-validator-e8ce9503dd65ef81f915e077cbd131733cf7e600.tar.bz2 |
htdocs/docs/errors.html is out of sync with current error messages and explanations, creating a small script extracting them from the DB in the same format
Diffstat (limited to 'misc/docs_errors.pl')
-rwxr-xr-x | misc/docs_errors.pl | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/misc/docs_errors.pl b/misc/docs_errors.pl new file mode 100755 index 0000000..1e98a8a --- /dev/null +++ b/misc/docs_errors.pl @@ -0,0 +1,117 @@ +#!/usr/bin/perl -T +## +## Generates HTML documentation of error messages and explanations +## for W3C Markup Validation Service +## $Id: docs_errors.pl,v 1.1 2005-03-17 06:30:13 ot Exp $ + +## Pragmas. +use strict; +use warnings; + + +## Modules. See also the BEGIN block further down below. + +use HTML::Template 2.6 qw(); +use Config::General 2.19 qw(); # Need 2.19 for -AutoLaunder + +use vars qw($DEBUG $CFG $RSRC $VERSION $HAVE_IPC_RUN); +# Define global constants +use constant TRUE => 1; +use constant FALSE => 0; + +BEGIN { + # Launder data for -T; -AutoLaunder doesn't catch this one. + if (exists $ENV{W3C_VALIDATOR_HOME}) { + $ENV{W3C_VALIDATOR_HOME} =~ /^(.*)$/; + $ENV{W3C_VALIDATOR_HOME} = $1; + } + + # + # Read Config Files. + eval { + my %config_opts = ( + -ConfigFile => ($ENV{W3C_VALIDATOR_CFG} || '/etc/w3c/validator.conf'), + -MergeDuplicateOptions => TRUE, + -MergeDuplicateBlocks => TRUE, + -SplitPolicy => 'equalsign', + -UseApacheInclude => TRUE, + -IncludeRelative => TRUE, + -InterPolateVars => TRUE, + -AutoLaunder => TRUE, + -AutoTrue => TRUE, + -DefaultConfig => { + Protocols => {Allow => 'http,https'}, + Paths => { + Base => ($ENV{W3C_VALIDATOR_HOME} || '/usr/local/validator'), + SGML => {Parser => '/usr/bin/onsgmls'}, + }, + }, + ); + my %cfg = Config::General->new(%config_opts)->getall(); + $CFG = \%cfg; + }; + if ($@) { + die <<".EOF."; +Could not read configuration. Set the W3C_VALIDATOR_CFG environment variable +or copy conf/* to /etc/w3c/. Make sure that the configuration file and all +included files are readable by the web server user. The error was:\n'$@' +.EOF. + } +} # end of BEGIN block. + +# +# Get rid of (possibly insecure) $PATH. +delete $ENV{PATH}; + +our $lang = 'en_US'; # @@@ TODO: conneg + +# Read error message + explanations file +our $error_messages_file = File::Spec->catfile($CFG->{Paths}->{Templates}, $lang, 'error_messages.cfg'); +our %config_errs = (-ConfigFile => $error_messages_file); +our %rsrc = Config::General->new(%config_errs)->getall(); +$RSRC = \%rsrc; + + +our $T = HTML::Template->new( + filename => File::Spec->catfile($CFG->{Paths}->{Templates}, $lang, 'docs_errors.tmpl'), + die_on_bad_params => FALSE, +); + +$T->param(list_errors => &list_errors($RSRC)); +print $T->output; + +sub list_errors{ + my $RSRC = shift; + my $errors = []; + my $error_id; + my $max_error_id=500; # where to stop + for ($error_id=0;$error_id<$max_error_id;$error_id++) + { + my %single_error; + if ($RSRC->{msg}->{$error_id}) + { + my $original = $RSRC->{msg}->{$error_id}->{original}; + $original = &de_template_explanation($original); + $single_error{original} = $original; + $single_error{verbose} = $RSRC->{msg}->{$error_id}->{verbose}; + $single_error{id} = $error_id; + push @{$errors}, \%single_error; + } + } + print $errors; + return $errors; +} + +sub de_template_explanation { +# takes the error message template, and replace "template keywords" with real life keywords + my $explanation = shift; + if ($explanation){ + $explanation =~ s/\%1/X/; + $explanation =~ s/\%2/Y/; + $explanation =~ s/\%3/Z/; + $explanation =~ s/\%4/a/; + $explanation =~ s/\%5/b/; + $explanation =~ s/\%6/c/; + } + return $explanation; +} |