/[suikacvs]/markup/html/html5/spec-ja/common.pl
Suika

Contents of /markup/html/html5/spec-ja/common.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (hide annotations) (download)
Thu Oct 23 04:13:20 2008 UTC (17 years, 3 months ago) by wakaba
Branch: MAIN
CVS Tags: after-new-ids
Changes since 1.5: +1 -1 lines
File MIME type: text/plain
make

1 wakaba 1.1 use strict;
2    
3     my $data_suffix = q[.dat];
4 wakaba 1.6 my $data_dir_name = q[data2/];
5 wakaba 1.1
6     sub normalize ($) {
7     my $s = shift;
8     $s =~ s/\s+/ /g;
9     $s =~ s/^ //;
10     $s =~ s/ $//g;
11     return $s;
12     } # normalize
13    
14     sub create_pattern1 ($) {
15     my $s = quotemeta shift;
16     $s =~ s/\\\*/(.+)/g;
17     return $s;
18     } # create_pattern1
19    
20     sub replace_pattern2 ($@) {
21     my $s = shift;
22     my @arg = @_;
23     $s =~ s/\$(\d+)/$arg[$1 - 1]/g;
24     return $s;
25     } # replace_pattern2
26    
27 wakaba 1.5 sub load_data_file ($$$) {
28     my ($data_file_name, $exact_data, $pattern_data) = @_;
29 wakaba 1.1
30     open my $data_file, '<:utf8', $data_file_name
31     or die "$0: $data_file_name: $!";
32     local $/ = undef;
33     my $data = <$data_file>;
34     $data =~ s/\x0D?\x0A/\n/g;
35     for (split /\n\n+(?=#)/, $data) {
36     my ($en, $ja) = split /\n#ja\n/, $_;
37     if ($en =~ s/^#en\n//) {
38     $exact_data->{normalize ($en)} = $ja;
39     } elsif ($en =~ s/^#pattern\n//) {
40     $pattern_data->{create_pattern1 (normalize ($en))} = $ja;
41     }
42     }
43     } # load_data_file
44    
45     sub for_each_data_file ($) {
46     my ($code) = @_;
47    
48     opendir my $data_dir, $data_dir_name or die "$0: $data_dir_name: $!";
49     for (sort {$a cmp $b} readdir $data_dir) {
50     next if /^\./; # hidden files
51 wakaba 1.2 next if /^_/; # editable but not-used files
52 wakaba 1.1 my $data_file_name = qq[$data_dir_name$_];
53     next unless $data_file_name =~ /\Q$data_suffix\E$/;
54 wakaba 1.3 $code->($data_file_name, $_);
55 wakaba 1.1 }
56     } # for_each_data_file
57    
58     1;
59    

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24