/[pub]/test/html-whatpm/parser.cgi
Suika

Contents of /test/html-whatpm/parser.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.8 - (hide annotations) (download)
Sat Aug 11 13:54:55 2007 UTC (18 years, 11 months ago) by wakaba
Branch: MAIN
Changes since 1.7: +7 -8 lines
++ ChangeLog	11 Aug 2007 13:54:20 -0000
2007-08-11  Wakaba  <wakaba@suika.fam.cx>

	* cc.cgi, parser-manakai.cgi, parser.cgi: Use |Message::CGI::HTTP|
	instead of |SuikaWiki::Input::HTTP|.

2007-08-05  Wakaba  <wakaba@suika.fam.cx>

	* cc-interface.en.html: IMT |application/atom+xml| is added.
	Link to |cc-todo| is added.

2007-07-24  Wakaba  <wakaba@suika.fam.cx>

	* error-description.xml: Description for "after body", "bare etago",
	and "bogus end tag" are added.

1 wakaba 1.1 #!/usr/bin/perl
2     use strict;
3    
4 wakaba 1.2 use lib qw[/home/httpd/html/www/markup/html/whatpm
5 wakaba 1.8 /home/wakaba/work/manakai2/lib];
6 wakaba 1.5 use CGI::Carp qw[fatalsToBrowser];
7 wakaba 1.6 use Time::HiRes qw/time/;
8 wakaba 1.1
9 wakaba 1.8 use Message::CGI::HTTP;
10     my $http = Message::CGI::HTTP->new;
11 wakaba 1.1
12     ## TODO: _charset_
13    
14 wakaba 1.8 my $mode = $http->get_meta_variable ('PATH_INFO');
15 wakaba 1.1 ## TODO: decode unreserved characters
16    
17 wakaba 1.2 if ($mode eq '/html' or $mode eq '/test') {
18 wakaba 1.1 require Encode;
19 wakaba 1.3 require Whatpm::HTML;
20     require Whatpm::NanoDOM;
21 wakaba 1.1
22 wakaba 1.8 my $s = $http->get_parameter ('s');
23 wakaba 1.1 if (length $s > 1000_000) {
24     print STDOUT "Status: 400 Document Too Long\nContent-Type: text/plain; charset=us-ascii\n\nToo long";
25     exit;
26     }
27    
28 wakaba 1.6 my $time1 = time;
29 wakaba 1.1 $s = Encode::decode ('utf-8', $s);
30 wakaba 1.6 my $time2 = time;
31     my %time = (decode => $time2 - $time1);
32 wakaba 1.7 my $char_length = length $s;
33 wakaba 1.6
34 wakaba 1.1 print STDOUT "Content-Type: text/plain; charset=utf-8\n\n";
35    
36 wakaba 1.2 print STDOUT "#errors\n";
37    
38     my $onerror = sub {
39 wakaba 1.4 my (%opt) = @_;
40     print STDOUT "$opt{line},$opt{column},$opt{type}\n";
41 wakaba 1.2 };
42 wakaba 1.1
43 wakaba 1.6 $time1 = time;
44 wakaba 1.3 my $doc = Whatpm::HTML->parse_string
45     ($s => Whatpm::NanoDOM::Document->new, $onerror);
46 wakaba 1.6 $time2 = time;
47     $time{parse} = $time2 - $time1;
48 wakaba 1.1