--- test/html-whatpm/parser-manakai.cgi 2007/06/25 00:15:12 1.2 +++ test/html-whatpm/parser-manakai.cgi 2008/04/12 15:57:56 1.7 @@ -1,23 +1,21 @@ -#!/usr/bin/perl -d:DProf +#!/usr/bin/perl use strict; use lib qw[/home/httpd/html/www/markup/html/whatpm - /home/wakaba/work/manakai/lib - /home/wakaba/public_html/-temp/wiki/lib]; + /home/wakaba/work/manakai2/lib]; use CGI::Carp qw[fatalsToBrowser]; use Time::HiRes qw/time/; -use SuikaWiki::Input::HTTP; ## TODO: Use some better CGI module - -my $http = SuikaWiki::Input::HTTP->new; +use Message::CGI::HTTP; +my $http = Message::CGI::HTTP->new; ## TODO: _charset_ -my @mode = split m#/#, scalar $http->meta_variable ('PATH_INFO'), -1; +my @mode = split m#/#, scalar $http->get_meta_variable ('PATH_INFO'), -1; shift @mode if @mode and $mode[0] == ''; ## TODO: decode unreserved characters - my $s = $http->parameter ('s'); + my $s = $http->get_parameter ('s'); if (length $s > 1000_000) { print STDOUT "Status: 400 Document Too Long\nContent-Type: text/plain; charset=us-ascii\n\nToo long"; exit; @@ -28,13 +26,14 @@ my $time2; require Message::DOM::DOMImplementation; - my $dom = Message::DOM::DOMImplementation->____new; + my $dom = Message::DOM::DOMImplementation->new; # $| = 1; my $doc; my $el; + if (@mode == 3 and $mode[0] eq 'html' and - ($mode[2] eq 'html' or $mode[2] eq 'test')) { + ($mode[2] eq 'html' or $mode[2] eq 'test' or $mode[2] eq 'xml')) { print STDOUT "Content-Type: text/plain; charset=utf-8\n\n"; require Encode; @@ -54,6 +53,7 @@ }; $doc = $dom->create_document; + $doc->manakai_is_html (1); $time1 = time; if (length $mode[1]) { $el = $doc->create_element_ns @@ -70,9 +70,16 @@ my $out; if ($mode[2] eq 'html') { $time1 = time; - $out = Whatpm::HTML->get_inner_html ($el || $doc); + $out = \( ($el or $doc)->inner_html ); $time2 = time; $time{serialize_html} = $time2 - $time1; + } elsif ($mode[2] eq 'xml') { + $doc->manakai_is_html (0); + $time1 = time; + $out = \( ($el or $doc)->inner_html ); + $time2 = time; + $time{serialize_xml} = $time2 - $time1; + $doc->manakai_is_html (1); } else { # test $time1 = time; $out = test_serialize ($el || $doc); @@ -82,7 +89,7 @@ print STDOUT Encode::encode ('utf-8', $$out); print STDOUT "\n"; } elsif (@mode == 3 and $mode[0] eq 'xhtml' and - ($mode[2] eq 'html' or $mode[2] eq 'test')) { + ($mode[2] eq 'html' or $mode[2] eq 'test' or $mode[2] eq 'xml')) { print STDOUT "Content-Type: text/plain; charset=utf-8\n\n"; require Message::DOM::XMLParserTemp; @@ -107,8 +114,54 @@ my $out; if ($mode[2] eq 'html') { - ## TODO: Use XHTML serializer - #$out = Whatpm::HTML->get_inner_html ($doc); + $doc->manakai_is_html (0); + $time1 = time; + $out = \( $doc->inner_html ); ## TODO: $el case + $time2 = time; + $time{serialize_html} = $time2 - $time1; + $doc->manakai_is_html (1); + } elsif ($mode[2] eq 'xml') { + $time1 = time; + $out = \( $doc->inner_html ); ## TODO: $el case + $time2 = time; + $time{serialize_xml} = $time2 - $time1; + } else { # test + $time1 = time; + $out = test_serialize ($doc); + $time2 = time; + $time{serialize_test} = $time2 - $time1; + } + print STDOUT Encode::encode ('utf-8', $$out); + print STDOUT "\n"; +} elsif (@mode == 3 and $mode[0] eq 'h2h' and $mode[1] eq '' and + ($mode[2] eq 'html' or $mode[2] eq 'test' or $mode[2] eq 'xml')) { + print STDOUT "Content-Type: text/plain; charset=utf-8\n\n"; + + require Encode; + $time1 = time; + $s = Encode::decode ('utf-8', $s); + $time2 = time; + $time{decode} = $time2 - $time1; + + require Whatpm::H2H; + $doc = $dom->create_document; + Whatpm::H2H->parse_string ($s => $doc); + + print "#document\n"; + + my $out; + if ($mode[2] eq 'html') { + $doc->manakai_is_html (0); + $time1 = time; + $out = \( $doc->inner_html ); + $time2 = time; + $time{serialize_html} = $time2 - $time1; + $doc->manakai_is_html (1); + } elsif ($mode[2] eq 'xml') { + $time1 = time; + $out = \( $doc->inner_html ); + $time2 = time; + $time{serialize_xml} = $time2 - $time1; } else { # test $time1 = time; $out = test_serialize ($doc); @@ -122,7 +175,7 @@ exit; } - if ($http->parameter ('dom5')) { + if ($http->get_parameter ('dom5')) { require Whatpm::ContentChecker; my $onerror = sub { my %opt = @_; @@ -236,4 +289,4 @@ =cut -## $Date: 2007/06/25 00:15:12 $ +## $Date: 2008/04/12 15:57:56 $