- From: Olivier Thereaux via cvs-syncmail <cvsmail@w3.org>
- Date: Tue, 20 Feb 2007 02:02:38 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/validator/httpd/cgi-bin
In directory hutz:/tmp/cvs-serv29737/httpd/cgi-bin
Modified Files:
check
Log Message:
Adding an option for the grouping of error by error id, keeping the ordering
of messages according to parsing sequence.
Index: check
===================================================================
RCS file: /sources/public/validator/httpd/cgi-bin/check,v
retrieving revision 1.468
retrieving revision 1.469
diff -u -d -r1.468 -r1.469
--- check 7 Feb 2007 15:24:29 -0000 1.468
+++ check 20 Feb 2007 02:02:36 -0000 1.469
@@ -56,7 +56,6 @@
use Encode::Alias qw();
use HTML::Encoding 0.52 qw();
use SGML::Parser::OpenSP qw();
-use HTML::Tidy qw();
###############################################################################
#### Constant definitions. ####################################################
@@ -375,6 +374,7 @@
$File->{Opt}->{'Show ESIS'} = $q->param('esis') ? TRUE : FALSE;
$File->{Opt}->{'Show Errors'} = $q->param('errors') ? TRUE : FALSE;
$File->{Opt}->{'Verbose'} = $q->param('verbose') ? TRUE : FALSE;
+$File->{Opt}->{'Group Errors'} = $q->param('group') ? TRUE : FALSE;
$File->{Opt}->{'Debug'} = $q->param('debug') ? TRUE : FALSE;
$File->{Opt}->{'No200'} = $q->param('No200') ? TRUE : FALSE;
$File->{Opt}->{'Charset'} = $q->param('charset') ? lc $q->param('charset'): '';
@@ -691,8 +691,17 @@
## if invalid content, pass through tidy
if (! $File->{'Is Valid'}) {
- my $tidy = HTML::Tidy->new();
- $File->{'Tidy'} = $tidy->clean(join"\n",@{$File->{Content}});
+ eval {
+ local $SIG{__DIE__};
+ require HTML::Tidy;
+ my $tidy = HTML::Tidy->new();
+ $File->{'Tidy'} = $tidy->clean(join"\n",@{$File->{Content}});
+ $File->{'Tidy_OK'} = TRUE;
+ };
+ if ($@) {
+ $File->{'Tidy_OK'} = FALSE;
+ }
+
}
my $template;
@@ -786,6 +795,7 @@
$T->param(opt_show_parsetree => $File->{Opt}->{'Show Parsetree'});
$T->param(opt_show_noatt => $File->{Opt}->{'No Attributes'});
$T->param(opt_verbose => $File->{Opt}->{'Verbose'});
+ $T->param(opt_group_errors => $File->{Opt}->{'Group Errors'});
$T->param(opt_no200 => $File->{Opt}->{'No200'});
#
@@ -841,14 +851,24 @@
$num_warnings += scalar @{$File->{Warnings}};
$T->param(valid_warnings_num => $num_warnings);
my $number_of_errors = ""; # textual form of $num_errors
+ my $number_of_warnings = ""; # textual form of $num_errors
+
if ($num_errors > 1) {
$number_of_errors = "$num_errors errors"
}
else {
$number_of_errors = "$num_errors error"
}
+ if ($num_warnings > 1) {
+ $number_of_warnings = "$num_warnings warnings"
+ }
+ else {
+ $number_of_warnings = "$num_warnings warning"
+ }
+
$T->param(file_errors => $reported_errors);
$T->param(number_of_errors => $number_of_errors);
+ $T->param(number_of_warnings => $number_of_warnings);
if ($File->{'Is Valid'}) {
$T->param(VALID => TRUE);
$T->param(valid_status => 'Valid');
@@ -1254,6 +1274,7 @@
sub report_errors ($) {
my $File = shift;
my $Errors = [];
+ my %Errors_bytype;
my $number_of_errors = 0;
my $number_of_warnings = 0;
my $number_of_info = 0;
@@ -1270,16 +1291,24 @@
my $explanation;
if ($err->{num}) {
my $num = $err->{num};
- if (exists $Msgs{$num}) { # We've already seen this message...
- if ($File->{Opt}->{Verbose}) { # ...so only repeat it in Verbose mode.
- $explanation = qq(\n <div class="hidden mid-$num"></div>\n);
- }
- } else {
- $Msgs{$num} = 1;
+ < if (exists $Msgs{$num}) { # We've already seen this message...
+ <
+ < $explanation = qq(\n <div class="hidden mid-$num"></div>\n);
+ < }
+ < } else {
+ < $Msgs{$num} = 1;
+
+
+# if (exists $Msgs{$num}) { # We've already seen this message...
+# if ($File->{Opt}->{Verbose}) { # ...so only repeat it in Verbose mode.
+# $explanation = qq(\n <div class="hidden mid-$num"></div>\n);
+# }
+# } else {
+# $Msgs{$num} = 1;
$explanation .= "\n $RSRC->{msg}->{$num}->{verbose}\n"
if exists $RSRC->{msg}->{$num}
&& exists $RSRC->{msg}->{$num}->{verbose};
- }
+# }
my $_msg = $RSRC->{msg}->{nomsg}->{verbose};
$_msg =~ s/<!--MID-->/$num/g;
if ($File->{'Is Upload'})
@@ -1291,7 +1320,7 @@
my $escaped_uri = uri_escape($File->{URI});
$_msg =~ s/<!--URI-->/$escaped_uri/g;
}
- $explanation .= " $_msg\n"; # The send feedback plea.
+ $explanation = " $_msg\n".$explanation; # The send feedback plea.
}
$err->{src} = $line;
@@ -1322,9 +1351,35 @@
$number_of_warnings += 1;
}
# TODO other classes for "X" etc? FIXME find all types of message.
-
+
push @{$Errors}, $err;
- }
+
+ if (($File->{Opt}->{'Group Errors'}) and (($err->{type} eq 'E') or ($err->{type} eq 'W')or ($err->{type} eq 'X'))) {
+ # index by num for errors and warnings only - info usually give context of error or warning
+ if (! exists $Errors_bytype{$err->{num}}) {
+ $Errors_bytype{$err->{num}}->{instances} = [];
+ my $msg_text = $RSRC->{msg}->{$err->{num}}->{original};
+ $msg_text =~ s/%1/X/;
+ $msg_text =~ s/%2/Y/;
+ $Errors_bytype{$err->{num}}->{msg} = $msg_text;
+ $Errors_bytype{$err->{num}}->{expl} = $err->{expl};
+ $Errors_bytype{$err->{num}}->{type} = $err->{type};
+ $Errors_bytype{$err->{num}}->{class} = $err->{class};
+ $Errors_bytype{$err->{num}}->{err_type_err} = $err->{err_type_err};
+ $Errors_bytype{$err->{num}}->{err_type_warn} = $err->{err_type_warn};
+ $Errors_bytype{$err->{num}}->{err_type_info} = $err->{err_type_info};
+
+
+ }
+ push @ { $Errors_bytype{$err->{num}}->{instances} }, $err;
+ }
+ }
+ }
+ if ($File->{Opt}->{'Group Errors'}) {
+ $Errors = [];
+ for my $err_num (keys %Errors_bytype){
+ push @{$Errors}, $Errors_bytype{$err_num};
+ }
}
return $number_of_errors, $number_of_warnings, $number_of_info, $Errors;
}
@@ -1805,6 +1860,8 @@
$thispage .= ';outline=1' if $q->param('outline');
$thispage .= ';No200=1' if $q->param('No200');
$thispage .= ';verbose=1' if $q->param('verbose');
+ $thispage .= ';group=1' if $q->param('group');
+
if ($q->param('doctype')
and not $q->param('doctype') =~ /(Inline|detect)/i) {
$thispage .= ';doctype=' . uri_escape($q->param('doctype'));
@@ -1841,6 +1898,7 @@
# These were not added by report_valid; perhaps they should be?
# $thispage .= ';verbose=1' if $File->{Opt}->{'Verbose'};
+ # $thispage .= ';group=1' if $File->{Opt}->{'Group Errors'};
# $thispage .= ';No200=1' if $File->{Opt}->{'No200'};
return $thispage;
Received on Tuesday, 20 February 2007 02:02:43 UTC