230ecae922ceb86050d22cc5e5ab5040e4cacedb
Andrew Lewman first cut of the new, shiny...

Andrew Lewman authored 13 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) = @_;
Andrew Lewman switch to Goldstein's idea...

Andrew Lewman authored 13 years ago

51) 	my $translation = getMetadata("$lang/$dir/$page");
Andrew Lewman first cut of the new, shiny...

Andrew Lewman authored 13 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) = @_;
Andrew Lewman switch to Goldstein's idea...

Andrew Lewman authored 13 years ago

70) 	my $translation = getMetadata("$lang/$dir/$page");