validator/httpd/cgi-bin check,1.663,1.664

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

Modified Files:
	check 
Log Message:
Fix JSON output errors (missing/extra commas, incorrect escaping) (#7000).  New dependency: JSON >= 2.00.

Index: check
===================================================================
RCS file: /sources/public/validator/httpd/cgi-bin/check,v
retrieving revision 1.663
retrieving revision 1.664
diff -u -d -r1.663 -r1.664
--- check	29 Jun 2009 14:35:22 -0000	1.663
+++ check	29 Jun 2009 18:21:16 -0000	1.664
@@ -59,6 +59,7 @@
 use HTTP::Message        1.52 qw(); # Need 1.52 for decoded_content()
 use HTTP::Request             qw();
 use HTTP::Headers::Auth       qw(); # Needs to be imported after other HTTP::*.
+use JSON                 2.00 qw();
 use SGML::Parser::OpenSP      qw();
 use URI                       qw();
 use URI::Escape               qw(uri_escape);
@@ -1321,6 +1322,21 @@
 #  if $template->param('opt_show_raw_errors');
 #  $T->param(file_outline   => &outline($File)) if $T->param('opt_show_outline');
 
+if ($File->{Opt}->{Output} eq 'json') {
+  # No JSON escaping in HTML::Template (and "JS" is not the right thing here)
+  my $json = JSON->new();
+  $json->allow_nonref(TRUE);
+  for my $msgs ($template->param("file_errors"),
+                $template->param("file_warnings")) {
+    next unless $msgs;
+    for my $msg (@$msgs) {
+      for my $key (qw(msg expl)) {
+        $msg->{$key} = $json->encode($msg->{$key}) if $msg->{$key};
+      }
+    }
+  }
+}
+
 # transcode output from perl's internal to utf-8 and output
 print Encode::encode('UTF-8', $template->output);
 

Received on Monday, 29 June 2009 18:21:27 UTC