first cut of the new, shiny...
Andrew Lewman authored 14 years ago
|
1) #!/usr/bin/wml
2)
3) <:
4)
5) sub getMetadata($) {
6) my ($file) = @_;
7)
8) die ("File $file is not a regular file") unless (-f $file);
9)
10) open(F, "$file") or die ("Cannot open $file: $!\n");
11) my $found_metadata = 0;
12) while (<F>) {
13) chomp;
14) s/\r$//;
15) if ($_ eq '## translation metadata') {
16) $found_metadata = 1;
17) last;
18) };
19) };
20) die ("Did not find translation metadata in $file") unless $found_metadata;
21) my %data;
22) while (<F>) {
23) chomp;
24) s/\r$//;
25) if (/^#\s*(\S*):\s*(.*?)\s*$/) {
26) $data{$1} = $2;
27) } else {
28) last;
29) };
30) };
31) return \%data;
32) };
33)
34) sub translation_get_masterrevision_file($$) {
35) my ($dir, $page) = @_;
36) my $master = getMetadata("$dir/en/$page");
37)
38) die ("Cannot find 'Revision' header in master's translation metadata of en/$page") unless exists $master->{'Revision'};
39)
40) my ($rev) = $master->{'Revision'} =~ m/([0-9.]+)/;
41) if ($rev eq '') { $rev = '(Revision not a valid number)'; };
42)
43) return $rev;
44) };
45) sub translation_get_masterrevision() {
46) translation_get_masterrevision_file('.', $WML_SRC_FILENAME);
47) };
48)
49) sub translation_get_basedonrevision_langfile($$$) {
50) my ($dir, $lang, $page) = @_;
|
first cut of the new, shiny...
Andrew Lewman authored 14 years ago
|
52)
53) if (exists $translation->{'Based-On-Revision'}) {
54) return $translation->{'Based-On-Revision'};
55) } else {
56) return '(unknown)';
57) }
58) };
59) sub translation_get_basedonrevision() {
60) translation_get_basedonrevision_langfile(".", "$(LANG)", $WML_SRC_FILENAME);
61) };
62)
63)
64) sub translation_current() {
65) return (translation_get_masterrevision() eq translation_get_basedonrevision());
66) };
67)
68) sub file_is_obsolete($$$) {
69) my ($dir, $lang, $page) = @_;
|