validator/httpd/cgi-bin check,1.648,1.649

Update of /sources/public/validator/httpd/cgi-bin
In directory hutz:/tmp/cvs-serv27718/httpd/cgi-bin

Modified Files:
	check 
Log Message:
fixing bug in fuzzy matching routine that would match with list of attributes even when an unknown element would be found

Index: check
===================================================================
RCS file: /sources/public/validator/httpd/cgi-bin/check,v
retrieving revision 1.648
retrieving revision 1.649
diff -u -d -r1.648 -r1.649
--- check	16 Feb 2009 14:11:42 -0000	1.648
+++ check	17 Feb 2009 14:10:41 -0000	1.649
@@ -3015,11 +3015,20 @@
       }
       else {
           my @matches;
-          @matches = String::Approx::amatch($bogus_elt_attr, ["3i"], keys %{$self->{CFG}->{Attributes}}); 
+          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::adistr(lc($bogus_elt_attr), @matches);
+              @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} .= '. Maybe you meant "'.$matches_sorted[0].'" or "'.$matches_sorted[1].'"?';
               

Received on Tuesday, 17 February 2009 14:10:51 UTC