/[suikacvs]/markup/html/html5/spec-ja/find.cgi
Suika

Contents of /markup/html/html5/spec-ja/find.cgi

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.7 - (hide annotations) (download)
Mon Oct 27 04:52:39 2008 UTC (17 years, 10 months ago) by wakaba
Branch: MAIN
CVS Tags: HEAD
Changes since 1.6: +102 -67 lines
Find script revised for new data format

1 wakaba 1.1 #!/usr/bin/perl
2     use strict;
3 wakaba 1.3 use utf8;
4     use CGI::Carp qw/fatalsToBrowser/;
5 wakaba 1.1
6     BEGIN { require 'common.pl' }
7    
8     require Encode;
9    
10 wakaba 1.3 my $max_result = 100;
11 wakaba 1.1
12     sub decode_url ($) {
13     my $s = shift;
14     $s =~ tr/+/ /;
15     $s =~ s/%([0-9A-Fa-f]{2})/pack 'C', hex $1/ge;
16     return Encode::decode ('utf-8', $s);
17     } # decode_url
18    
19 wakaba 1.7 sub encode_url ($) {
20     my $s = Encode::encode ('utf-8', shift);
21     $s =~ s/([^0-9A-Za-z_~.-])/sprintf '%%%02X', ord $1/g;
22     return $s;
23     } # encode_url
24    
25 wakaba 1.1 sub htescape ($) {
26     my $s = shift;
27     $s =~ s/&/&/g;
28     $s =~ s/</&lt;/g;
29     $s =~ s/>/&gt;/g;
30     $s =~ s/"/&quot;/g;
31     return $s;
32     } # htescape
33    
34     my $param = {};
35     for (split /[&;]/, $ENV{QUERY_STRING} || '') {
36     my ($name, $value) = split /=/, $_, 2;
37     $param->{decode_url ($name)} = decode_url ($value);
38     }
39    
40 wakaba 1.7 my $suffix_patterns = {
41 wakaba 1.3 ku => qr/(?>[かこきいっくけ])/,
42     su => qr/(?>[さそしすせ])/,
43     tsu => qr/(?>[たとちっつて])/,
44     nu => qr/(?>[なのにんぬね])/,
45     mu => qr/(?>[まもみんむめ])/,
46     ru => qr/(?>[らろりっるれ])/,
47     u => qr/(?>[わおいっうえ])/,
48     gu => qr/(?>[がごぎいぐげ])/,
49     bu => qr/(?>[ばぼびんぶべ])/,
50     ichidan => qr/(?>[るれろよ])?/,
51     kuru => qr/(?>[るれい])?/,
52     suru => qr/(?>す[るれ]|しろ?|せよ?|さ)?/,
53     i => qr/(?>か[ろっ]|く|い|けれ|う)?/, ## BUG: ありがたい -> ありがとう
54     da => qr/(?>だ[ろっ]?|で|に|なら?)?/,
55     dasuru => qr/(?>だ[ろっ]?|で|に|なら?|す[るれ]|しろ?|せよ?|さ)?/,
56