/[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.3 - (show annotations) (download)
Sun Aug 10 06:15:00 2008 UTC (17 years, 5 months ago) by wakaba
Branch: MAIN
Changes since 1.2: +1 -1 lines
File MIME type: text/plain
*** empty log message ***

1 use strict;
2
3 my $data_suffix = q[.dat];
4 my $data_dir_name = q[data/];
5
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 sub load_data_file ($$$) {
28 my ($data_file_name, $exact_data, $pattern_data) = @_;
29
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 next if /^_/; # editable but not-used files
52 my $data_file_name = qq[$data_dir_name$_];
53 next unless $data_file_name =~ /\Q$data_suffix\E$/;
54 $code->($data_file_name, $_);
55 }
56 } # for_each_data_file
57
58 1;
59

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24