- From: Ville Skytta via cvs-syncmail <cvsmail@w3.org>
- Date: Wed, 16 Sep 2009 19:15:21 +0000
- To: www-validator-cvs@w3.org
Update of /sources/public/validator/httpd/cgi-bin
In directory hutz:/tmp/cvs-serv12235/httpd/cgi-bin
Modified Files:
check
Log Message:
Remove fuzzy matching/"Did you mean ..." implementation due to too many
incorrect suggestions emitted. We'd need to be aware of which attributes
and/or elements are valid in the checked document in the particular position;
flat lists of all HTML elements and attributes results in too many false
positives. String::Approx usage would have probably needed some work as
well, or perhaps it wasn't the best choice for the task to begin with.
Index: check
===================================================================
RCS file: /sources/public/validator/httpd/cgi-bin/check,v
retrieving revision 1.695
retrieving revision 1.696
diff -u -d -r1.695 -r1.696
--- check 16 Sep 2009 17:32:07 -0000 1.695
+++ check 16 Sep 2009 19:15:19 -0000 1.696
@@ -64,7 +64,6 @@
use URI qw();
use URI::Escape qw(uri_escape);
use XML::LibXML qw();
-use String::Approx qw();
###############################################################################
#### Constant definitions. ####################################################
@@ -3122,58 +3121,6 @@
# in that case the error message will be #344
}
- if ( ($err->{num} eq '108') or ($err->{num} eq '76') )
- # element or attribute does not exist? Let's try and fuzzy-match it
- {
- my $bogus_elt_attr = $err->{msg};
- $bogus_elt_attr =~ s/.*"(.+)".*/$1/;
- if ($err->{num} eq '108') {
- $err->{msg} = "Attribute \"".$bogus_elt_attr."\" is not a valid attribute";
- }
-
- if(($err->{num} eq '108') and
- (exists $self->{CFG}->{Attributes}->{lc($bogus_elt_attr)}) and
- (!$is_xml || $bogus_elt_attr eq lc($bogus_elt_attr))) {
- # attribute not available in this context.
- $err->{msg} = "Attribute \"$bogus_elt_attr\" can not be used for this element.";
- }
- elsif ( (
- ((exists $self->{CFG}->{Attributes}->{lc($bogus_elt_attr)}) and ($err->{num} eq '108'))
- or
- ((exists $self->{CFG}->{Elements}->{lc($bogus_elt_attr)}) and ($err->{num} eq '76'))
- )
- and (lc($bogus_elt_attr) ne $bogus_elt_attr)
- )
- {
- $err->{msg} .= '. Did you mean "'.lc($bogus_elt_attr).'"?';
- }
- else { #fuzzy-match and suggest alternatives
- my @matches;
- if ($err->{num} eq '108') {
- @matches = String::Approx::amatch($bogus_elt_attr, ["3i"], keys %{$self->{CFG}->{Attributes}});
- }
- elsif ($err->{num} eq '76') {
- @matches = String::Approx::amatch($bogus_elt_attr, ["3i"], keys %{$self->{CFG}->{Elements}});
- }
- if (@matches){
- my %distances;
- @distances{@matches} = map { abs } String::Approx::adist(lc($bogus_elt_attr), @matches);
- my @matches_sorted = sort { $distances{$a} <=> $distances{$b} } @matches;
- # a bit of printf debugging can't hurt
- # foreach my $match (@matches_sorted) {
- # $err->{msg} .= '<br /> match '.$match.': '.$distances{$match};
- # }
- if (@matches > 1){
- $err->{msg} .= '. Did you mean "'.$matches_sorted[0].'" or "'.$matches_sorted[1].'"?';
-
- }
- else {
- $err->{msg} .= '. Did you mean "'.$matches_sorted[0].'"?';
- }
- }
- }
- }
-
if (($err->{num} eq '113') and ($err->{msg} =~ /xml:space/)) {
# FIXME
# this is a problem with some of the "flattened" W3C DTDs, filtering them out to not confuse users.
Received on Wednesday, 16 September 2009 19:15:32 UTC