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

Diff of /markup/html/html5/spec-ja/make.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.16 by wakaba, Wed Aug 13 10:00:09 2008 UTC revision 1.20 by wakaba, Sat Oct 25 11:28:27 2008 UTC
# Line 10  my $tbt_file_name_stem = shift; Line 10  my $tbt_file_name_stem = shift;
10    
11  my %data;  my %data;
12  my %pattern;  my %pattern;
 my %id_variant_pattern;  
13  for_each_data_file (sub ($) {  for_each_data_file (sub ($) {
14    my $data_file_name = shift;    my $data_file_name = shift;
15    warn "$data_file_name...\n";    warn "$data_file_name...\n";
16    load_data_file ($data_file_name, \%data, \%pattern, \%id_variant_pattern);    load_data_file ($data_file_name, \%data, \%pattern);
17  });  });
18  my @pattern = sort {length $b <=> length $a} keys %pattern;  my @pattern = sort {length $b <=> length $a} keys %pattern;
19    
# Line 58  $source_text =~ s{(<(?>p(?>re)?|li|d[td] Line 57  $source_text =~ s{(<(?>p(?>re)?|li|d[td]
57      if (defined $ja_text) {      if (defined $ja_text) {
58        $status->{ja}++;        $status->{ja}++;
59        $all_status->{$part}->{ja}++;        $all_status->{$part}->{ja}++;
60        $tag . q[<span class=ja-translation lang=ja>] . $ja_text . q[</span>];        add_class ($tag, 'has-ja-translation') .
61          q[<span class=en-original lang=en>] . escape_id ($text, 'en-') .
62          q[</span>] .
63          q[<span class=ja-translation lang=ja>] . $ja_text . q[</span>];
64      } else {      } else {
65        my $v = $tag . $text;        my $v;
       my $has_ja;  
66        for my $pattern (@pattern) {        for my $pattern (@pattern) {
67          if ($n_text =~ /^$pattern$/) {          if ($n_text =~ /^$pattern$/) {
68            $status->{ja}++;            $status->{ja}++;
69            $v = $tag . q[<span class=ja-translation lang=ja>] .            $all_status->{$part}->{ja}++;
70              $v = add_class ($tag, 'has-ja-translation') .
71                  q[<span class=en-original lang=en>] .
72                  escape_id ($text, 'en-') . q[</span>] .
73                  q[<span class=ja-translation lang=ja>] .
74                replace_pattern2 ($pattern{$pattern}, $1, $2, $3, $4, $5) .                replace_pattern2 ($pattern{$pattern}, $1, $2, $3, $4, $5) .
75                q[</span>];                q[</span>];
           $has_ja = 1;  
76            last;            last;
77          }          }
78        }        }
79    
80        if ($n_text =~ /\bhref="#/) {        unless (defined $v) {
81          for my $pattern (keys %id_variant_pattern) {          $v = add_class ($tag, 'no-ja-translation') . $text;
82            if ($n_text =~ /^$pattern$/) {          
             $status->{ja}++;  
             my $id_map = {};  
             my $old_ids = $id_variant_pattern{$pattern}->[1];  
             for (0..$#$old_ids) {  
               $id_map->{$old_ids->[$_]}  
                   = substr ($n_text, $-[$_ + 1], $+[$_ + 1] - $-[$_ + 1]);  
             }  
             my $w = $id_variant_pattern{$pattern}->[0];  
             for (keys %$id_map) {  
               $w =~ s/\bhref="#([^"]+)"/href="#$id_map->{$1}"/g;  
             }  
   
             $v = $tag . q[<span class=ja-translation lang=ja>] .  
                 $w .  
                 q[</span>];  
             $has_ja = 1;  
   
             my $o = $id_variant_pattern{$pattern}->[2];  
             for (keys %$id_map) {  
               $o =~ s/\bhref="#([^"]+)"/href="#$id_map->{$1}"/g;  
             }  
             $data{$o} ||= $w;  
             delete $id_variant_pattern{$pattern};  
             
 warn $o;  
   
             last;  
           }  
         }  
       }  
   
       unless ($has_ja) {  
83          $text =~ s/^\s+//;          $text =~ s/^\s+//;
84          $text =~ s/\s+\z//;          $text =~ s/\s+\z//;
85          $text =~ s/\x0D?\x0A(?:\x0D?\x0A)+/\n/g;          $text =~ s/\x0D?\x0A(?:\x0D?\x0A)+/\n/g;
# Line 164  $source_text =~ s{\[\[([A-Z ]+):([^]]+)\ Line 136  $source_text =~ s{\[\[([A-Z ]+):([^]]+)\
136    print $status_file "\n";    print $status_file "\n";
137    close $status_file;    close $status_file;
138  }  }
139    
140    sub add_class ($$) {
141      my $tag = shift;
142      my $new_class = shift; # should not contain bare & and bare "
143    
144      if ($tag =~ /^<li\b/) {
145        ## NOTE: This |p| wrapper is necessary, otherwise, if |li| element
146        ## is set to |display: table|, then no list marker is shown.
147        $tag .= qq[<p class="$new_class ja-translation-inserted">];
148      } elsif ($tag =~ /\bclass="/) {
149        $tag =~ s/\bclass="([^"]*)"/class="$1 $new_class"/;
150      } elsif ($tag =~ /\bclass=/) {
151        $tag =~ s/\bclass=([^\s>]+)/class="$1 $new_class"/g;
152      } else {
153        $tag =~ s/>/ class="$new_class">/;
154      }
155      
156      return $tag;
157    } # add_class
158    
159    sub escape_id ($$) {
160      my $content = shift;
161      my $id_prefix = shift; # should not contain bare & and bare "
162      
163      $content =~ s{<([a-zA-Z0-9-][^<>]+)>}{
164        my $tag_content = $1;
165    
166        if ($tag_content =~ /\bid="/) {
167          $tag_content =~ s/\bid="([^"]*)"/id="$id_prefix$1"/;
168        } elsif ($tag_content =~ /\bid=/) {
169          $tag_content =~ s/\bid=(\S+)/id="$id_prefix$1"/;
170        }
171    
172    #    if ($tag_content =~ /\bhref=#/) {
173    #      $tag_content =~ s/\bhref=#(\S+)/href=#$id_prefix$1/;
174    #    }
175    
176        '<' . $tag_content . '>';
177      }ge;
178    
179      return $content;
180    } # escape_id

Legend:
Removed from v.1.16  
changed lines
  Added in v.1.20

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24