Convert WebGUI::International to use blocky eval instead of stringy eval.
Add 1 test for getLanguage to check for refactoring.
This commit is contained in:
parent
1989242c8e
commit
c8a1bb6a7c
2 changed files with 19 additions and 11 deletions
|
|
@ -101,10 +101,12 @@ sub get {
|
||||||
$language =~ s/$safeRe//g;
|
$language =~ s/$safeRe//g;
|
||||||
$namespace =~ s/$safeRe//g;
|
$namespace =~ s/$safeRe//g;
|
||||||
my $cmd = "WebGUI::i18n::".$language."::".$namespace;
|
my $cmd = "WebGUI::i18n::".$language."::".$namespace;
|
||||||
|
my $file = $cmd;
|
||||||
|
$file =~ s{::}{/}g;
|
||||||
|
$file .= '.pm';
|
||||||
|
|
||||||
if (!defined *{"$cmd\::I18N"}) { ##Symbol table lookup
|
if (!exists $INC{ $file }) { ##Alread loaded?
|
||||||
my $load = "use ".$cmd;
|
eval{ require $file };
|
||||||
eval($load);
|
|
||||||
$self->session->errorHandler->warn($cmd." failed to compile because ".$@) if ($@);
|
$self->session->errorHandler->warn($cmd." failed to compile because ".$@) if ($@);
|
||||||
}
|
}
|
||||||
our $table;
|
our $table;
|
||||||
|
|
@ -135,11 +137,13 @@ sub getLanguage {
|
||||||
my ($self, $language, $property) = @_;
|
my ($self, $language, $property) = @_;
|
||||||
$language = $language || $self->{_language} || "English";
|
$language = $language || $self->{_language} || "English";
|
||||||
my $cmd = "WebGUI::i18n::".$language;
|
my $cmd = "WebGUI::i18n::".$language;
|
||||||
my $load = "use ".$cmd;
|
my $file = $cmd;
|
||||||
eval($load);
|
$file =~ s{::}{/}g;
|
||||||
|
$file .= '.pm';
|
||||||
|
eval{require $file};
|
||||||
unless ($@) {
|
unless ($@) {
|
||||||
$cmd = "\$".$cmd."::LANGUAGE";
|
#$cmd = "\$".$cmd."::LANGUAGE";
|
||||||
my $hashRef = eval($cmd);
|
my $hashRef = eval{ $cmd::LANGUAGE };
|
||||||
$self->session->errorHandler->warn("Failed to retrieve language properties because ".$@) if ($@);
|
$self->session->errorHandler->warn("Failed to retrieve language properties because ".$@) if ($@);
|
||||||
if ($property) {
|
if ($property) {
|
||||||
return $hashRef->{$property};
|
return $hashRef->{$property};
|
||||||
|
|
@ -210,8 +214,10 @@ sub makeUrlCompliant {
|
||||||
my ($self, $url, $language) = @_;
|
my ($self, $url, $language) = @_;
|
||||||
$language = $language || $self->{_language} || $self->session->user->profileField("language") || "English";
|
$language = $language || $self->{_language} || $self->session->user->profileField("language") || "English";
|
||||||
my $cmd = "WebGUI::i18n::".$language;
|
my $cmd = "WebGUI::i18n::".$language;
|
||||||
my $load = "use ".$cmd;
|
my $file = $cmd;
|
||||||
eval($load);
|
$file =~ s{::}{/}g;
|
||||||
|
$file .= '.pm';
|
||||||
|
eval { require $file };
|
||||||
$self->session->errorHandler->warn($cmd." failed to compile because ".$@) if ($@);
|
$self->session->errorHandler->warn($cmd." failed to compile because ".$@) if ($@);
|
||||||
$cmd = $cmd."::makeUrlCompliant";
|
$cmd = $cmd."::makeUrlCompliant";
|
||||||
my $output = eval{&$cmd($url)};
|
my $output = eval{&$cmd($url)};
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,9 @@ use File::Spec;
|
||||||
|
|
||||||
my $session = WebGUI::Test->session;
|
my $session = WebGUI::Test->session;
|
||||||
|
|
||||||
my $numTests = 1; ##For conditional load check
|
my $numTests = 1; ##For conditional load check
|
||||||
my $langTests = 2; ##For language look-up tests
|
my $langTests = 2; ##For language look-up tests
|
||||||
$numTests += 9 + $langTests;
|
$numTests += 10 + $langTests;
|
||||||
|
|
||||||
plan tests => $numTests;
|
plan tests => $numTests;
|
||||||
|
|
||||||
|
|
@ -67,6 +67,8 @@ SKIP: {
|
||||||
'Language check: existing key returns native language key'
|
'Language check: existing key returns native language key'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
is($i18n->getLanguage('English', 'label'), 'English', 'getLanguage, specific property');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue