git.schokokeks.org
Repositories
Help
Report an Issue
tor-webwml.git
Code
Commits
Branches
Tags
Suche
Strukturansicht:
1afb40033
Branches
Tags
bridges
docs-debian
jobs
master
press-clips
tor-webwml.git
include
functions.wmi
Revert r11748 - the based-on-revision "fix" that broke it all :)
Peter Palfrader
commited
1afb40033
at 2007-10-08 23:26:35
functions.wmi
Blame
History
Raw
#!/usr/bin/wml <: sub getMetadata($) { my ($file) = @_; die ("File $file is not a regular file") unless (-f $file); open(F, "$file") or die ("Cannot open $file: $!\n"); my $found_metadata = 0; while (<F>) { chomp; s/\r$//; if ($_ eq '## translation metadata') { $found_metadata = 1; last; }; }; die ("Did not find translation metadata in $file") unless $found_metadata; my %data; while (<F>) { chomp; s/\r$//; if (/^#\s*(\S*):\s*(.*?)\s*$/) { $data{$1} = $2; } else { last; }; }; return \%data; }; sub translation_get_masterrevision_file($$) { my ($dir, $page) = @_; my $master = getMetadata("$dir/en/$page"); die ("Cannot find 'Revision' header in master's translation metadata of en/$page") unless exists $master->{'Revision'}; my ($rev) = $master->{'Revision'} =~ m/([0-9.]+)/; if ($rev eq '') { $rev = '(Revision not a valid number)'; }; return $rev; }; sub translation_get_masterrevision() { translation_get_masterrevision_file('.', $WML_SRC_FILENAME); }; sub translation_get_basedonrevision_langfile($$$) { my ($dir, $lang, $page) = @_; my $translation = getMetadata("$dir/$lang/$page"); die ("Cannot find 'Based-On-Revision' header in translations's translation metadata of $lang/$page") unless exists $translation->{'Based-On-Revision'}; my ($rev) = $translation->{'Based-On-Revision'}; if ($rev eq '') { $rev = '(unknown)'; }; return $rev }; sub translation_get_basedonrevision() { translation_get_basedonrevision_langfile(".", "$(LANG)", $WML_SRC_FILENAME); }; sub translation_current() { return (translation_get_masterrevision() eq translation_get_basedonrevision()); }; sub file_is_obsolete($$$) { my ($dir, $lang, $page) = @_; my $translation = getMetadata("$dir/$lang/$page"); return (exists $translation->{'Status'} && ($translation->{'Status'} eq 'obsolete')) }; sub list_translations() { my @links = (); my $page = $WML_SRC_FILENAME; $page =~ s/\.wml//; for my $dir (@LANGUAGES) { if (-e "$dir/$WML_SRC_FILENAME") { if ($dir ne '$(LANG)') { push @links, sprintf('<a href="%s.html.%s">%s</a>', $page, $dir, $LANGUAGES{$dir}); }; }; }; return join(', ', @links); }; sub has_translations() { return list_translations() ne ''; }; :>