po plugin: factorize most checks into a new match_istranslation PageSpec
Signed-off-by: intrigeri <intrigeri@boum.org>master
parent
50f1fd43da
commit
75fc44ce2f
|
@ -36,17 +36,16 @@ sub targetpage (@) { #{{{
|
||||||
my $page=$params{page};
|
my $page=$params{page};
|
||||||
my $ext=$params{ext};
|
my $ext=$params{ext};
|
||||||
|
|
||||||
my ($origpage, $lang) = ($page =~ /(.*)[.]([a-z]{2}$)/);
|
if (! IkiWiki::PageSpec::match_istranslation($page, $page)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (defined $origpage && defined $lang
|
my ($masterpage, $lang) = ($page =~ /(.*)[.]([a-z]{2})$/);
|
||||||
&& (length($origpage) > 0) && (length($lang) > 0)
|
|
||||||
&& defined $config{po_supported_languages}{$lang}) {
|
|
||||||
if (! $config{usedirs} || $page eq 'index') {
|
if (! $config{usedirs} || $page eq 'index') {
|
||||||
return $origpage.".".$ext.".".$lang;
|
return $masterpage.".".$ext.".".$lang;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return $origpage."/index.".$ext.".".$lang;
|
return $masterpage."/index.".$ext.".".$lang;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
|
@ -68,4 +67,38 @@ sub htmlize (@) { #{{{
|
||||||
return $params{content};
|
return $params{content};
|
||||||
} #}}}
|
} #}}}
|
||||||
|
|
||||||
|
package IkiWiki::PageSpec;
|
||||||
|
|
||||||
|
sub match_istranslation ($;@) { #{{{
|
||||||
|
my $page=shift;
|
||||||
|
my $wanted=shift;
|
||||||
|
|
||||||
|
my %params=@_;
|
||||||
|
my $file=exists $params{file} ? $params{file} : $IkiWiki::pagesources{$page};
|
||||||
|
if (! defined $file) {
|
||||||
|
return IkiWiki::FailReason->new("no file specified");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! IkiWiki::pagetype($page) eq 'po') {
|
||||||
|
return IkiWiki::FailReason->new("is not a PO file");
|
||||||
|
}
|
||||||
|
|
||||||
|
my ($masterpage, $lang) = ($page =~ /(.*)[.]([a-z]{2})$/);
|
||||||
|
if (! defined $masterpage || ! defined $lang
|
||||||
|
|| ! (length($masterpage) > 0) || ! (length($lang) > 0)) {
|
||||||
|
return IkiWiki::FailReason->new("is not named like a translation file");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! defined $IkiWiki::pagesources{$masterpage}) {
|
||||||
|
return IkiWiki::FailReason->new("the master page does not exist");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (! defined $IkiWiki::config{po_supported_languages}{$lang}) {
|
||||||
|
return IkiWiki::FailReason->new("language $lang is not supported");
|
||||||
|
}
|
||||||
|
|
||||||
|
return IkiWiki::SuccessReason->new("page $page is a translation");
|
||||||
|
|
||||||
|
} #}}}
|
||||||
|
|
||||||
1
|
1
|
||||||
|
|
Loading…
Reference in New Issue