Parent Directory
|
Revision Log
++ 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 | |