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

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

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

revision 1.9 by apache, Sun Oct 26 07:03:10 2008 UTC revision 1.14 by wakaba, Mon Oct 27 04:52:38 2008 UTC
# Line 5  my $data_dir_name = q[data/]; Line 5  my $data_dir_name = q[data/];
5  my $data2_dir_name = q[data2/];  my $data2_dir_name = q[data2/];
6  my $data2_suffix = q[.dat];  my $data2_suffix = q[.dat];
7  my $lock_suffix = q[.lock];  my $lock_suffix = q[.lock];
8    
9    ## SEE ALSO: |Makefile|.
10  my $fallback_file_name = $data2_dir_name . 'fallback' . $data2_suffix;  my $fallback_file_name = $data2_dir_name . 'fallback' . $data2_suffix;
11    
12    ## SEE ALSO: |Makefile|.
13    my $patch_file_name = $data2_dir_name . 'modified.txt';
14    
15  our $UseCVS //= 1;  our $UseCVS //= 1;
16    
17  sub normalize ($) {  sub normalize ($) {
# Line 19  sub normalize ($) { Line 24  sub normalize ($) {
24    
25  sub get_hash ($) {  sub get_hash ($) {
26    require Digest::MD5;    require Digest::MD5;
27    return Digest::MD5::md5_hex (normalize ($_[0]));    require Encode;
28      return Digest::MD5::md5_hex (Encode::encode ('utf8', normalize ($_[0])));
29  } # get_hash  } # get_hash
30    
31  sub create_pattern1 ($) {  sub create_pattern1 ($) {
# Line 97  sub hash_to_file_name ($) { Line 103  sub hash_to_file_name ($) {
103  } # hash_to_file_name  } # hash_to_file_name
104    
105  my $Entry = {};  my $Entry = {};
106    my $ModifiedHash = {};
107    
108  sub get_entry ($) {  sub get_entry ($) {
109    my $hash = shift;    my $hash = shift;
# Line 134  sub set_entry ($$$) { Line 141  sub set_entry ($$$) {
141      delete $Entry->{$file_name}->{pattern}->{$hash};      delete $Entry->{$file_name}->{pattern}->{$hash};
142    }    }
143    $Entry->{$file_name}->{modified} = 1;    $Entry->{$file_name}->{modified} = 1;
144      $ModifiedHash->{$hash} = 1;
145  } # set_entry  } # set_entry
146    
147  use Fcntl ':flock';  use Fcntl ':flock';
# Line 153  sub lock_entry ($) { Line 161  sub lock_entry ($) {
161  sub commit_entries ($) {  sub commit_entries ($) {
162    for my $file_name (keys %{$Entry}) {    for my $file_name (keys %{$Entry}) {
163      if ($Entry->{$file_name}->{modified}) {      if ($Entry->{$file_name}->{modified}) {
164          delete $Entry->{$file_name}->{modified};
165        write_data_file ($file_name => $Entry->{$file_name});        write_data_file ($file_name => $Entry->{$file_name});
166      }      }
167    }    }
168    
169      open my $file, '>>', $patch_file_name or die "$0: $patch_file_name: $!";
170      for (keys %$ModifiedHash) {
171        print $file "$_\n";
172      }
173      close $file;
174    
175    my $msg = shift // $0;    my $msg = shift // $0;
176    system_ ('cvs', 'commit', -m => $msg) if $UseCVS;    system_ ('cvs', 'commit', -m => $msg, $data2_dir_name) if $UseCVS;
177  } # commit_entries  } # commit_entries
178    
179  sub get_all_entries () {  sub get_all_entries () {
# Line 174  sub get_all_entries () { Line 189  sub get_all_entries () {
189    return $Entry;    return $Entry;
190  } # get_all_entries  } # get_all_entries
191    
192    sub for_each_entry_set ($;$) {
193      my $code = shift;
194      my $on_the_fly = shift;
195      
196      opendir my $dir, $data2_dir_name or die "$0: $data2_dir_name: $!";
197      for (readdir $dir) {
198        next unless /\Q$data2_suffix\E$/;
199        my $file_name = $data2_dir_name . $_;
200        next if $file_name eq $fallback_file_name;
201    
202        if ($Entry->{$file_name}) {
203          $code->($file_name, $Entry->{$file_name});
204        } elsif ($on_the_fly) {
205          $code->($file_name, read_data_file ($file_name));
206        } else {
207          $Entry->{$file_name} = read_data_file ($file_name);
208          $code->($file_name, $Entry->{$file_name});
209        }
210      }
211    } # for_each_entry_set
212    
213  my $FallbackEntry;  my $FallbackEntry;
214  sub get_fallback_entry ($) {  sub get_fallback_entry ($) {
215    my $hash = shift;    my $hash = shift;
# Line 183  sub get_fallback_entry ($) { Line 219  sub get_fallback_entry ($) {
219    return $FallbackEntry->{$hash} // {};    return $FallbackEntry->{$hash} // {};
220  } # get_fallback_entry  } # get_fallback_entry
221    
222    sub get_entry_or_fallback_entry ($) {
223      my $hash = shift;
224    
225      my ($is_pattern, $entry) = get_entry ($hash);
226      unless (defined $entry->{en}) {
227        $entry = get_fallback_entry ($hash);
228      }
229      $entry->{tags} ||= [];
230      $entry->{isPattern} = 1 if $is_pattern;
231    
232      return $entry;
233    } # get_entry_or_fallback_entry
234    
235  sub set_fallback_entry ($$) {  sub set_fallback_entry ($$) {
236    my ($hash, $value) = @_;    my ($hash, $value) = @_;
237    unless (defined $FallbackEntry) {    unless (defined $FallbackEntry) {
# Line 191  sub set_fallback_entry ($$) { Line 240  sub set_fallback_entry ($$) {
240    $FallbackEntry->{$hash} = $value;    $FallbackEntry->{$hash} = $value;
241  } # set_fallback_entry  } # set_fallback_entry
242    
243    sub get_fallback_entries () {
244      unless (defined $FallbackEntry) {
245        $FallbackEntry = read_data_file ($fallback_file_name);
246      }
247      
248      return $FallbackEntry;
249    } # get_fallback_entries
250    
251  sub clear_fallback_entries () {  sub clear_fallback_entries () {
252    $FallbackEntry = {};    $FallbackEntry = {};
253  } # clear_fallback_entries  } # clear_fallback_entries
# Line 200  sub save_fallback_entries () { Line 257  sub save_fallback_entries () {
257        if defined $FallbackEntry;        if defined $FallbackEntry;
258  } # save_fallback_entries  } # save_fallback_entries
259    
260    sub get_modified_hashes () {
261      open my $file, '<', $patch_file_name or die "$0: $patch_file_name: $!";
262      return map {tr/\x0D\x0A//d; $_} <$file>;
263    } # get_modified_hashes
264    
265    sub clear_modified_hashes () {
266      open my $file, '>', $patch_file_name;
267      close $file;
268    } # clear_modified_hashes
269    
270  sub htescape ($) {  sub htescape ($) {
271    my $s = shift;    my $s = shift;
272    $s =~ s/&/&amp;/g;    $s =~ s/&/&amp;/g;
# Line 209  sub htescape ($) { Line 276  sub htescape ($) {
276  } # htescape  } # htescape
277    
278  sub system_ (@) {  sub system_ (@) {
279    (system @_) == 0 or die "$0: $?";    (system join (' ', map {quotemeta $_} @_) . " > /dev/null") == 0
280          or die "$0: $?";
281  } # system_  } # system_
282    
283  1;  1;

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.14

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24