Apache-Language
view release on metacpan or search on metacpan
Language/PlainFile.pm view on Meta::CPAN
package Apache::Language::PlainFile;
use strict;
use Apache::Language::Constants;
use vars qw($VERSION);
$VERSION = '0.03';
sub modified {
my ($class, $data, $cfg) = @_;
my $lastmod = (stat $cfg->{DictName})[9];
return $lastmod > $cfg->{LastModified};
}
sub store {
my ($class, $data, $cfg, $key, $lang, $value) = @_;
$cfg->{DATA}{$key}{$lang} = $value;
return L_OK;
}
sub fetch {
my ($class, $data, $cfg, $key, $lang) = @_;
return $cfg->{DATA}{$key}{$lang} if $lang;
my $variant = $data->best_lang(keys % {$cfg->{DATA}{$key}});
return $cfg->{DATA}{$key}{$variant} if $variant;
return undef;
}
sub firstkey {
my ($class, $data, $cfg) = @_;
my $a = keys % {$cfg->{DATA}};
return each % {$cfg->{DATA}};
}
sub nextkey {
my ($class, $data, $cfg, $lastkey) = @_;
return each % {$cfg->{DATA}};
}
sub initialize {
my ($self, $data, $cfg) = @_;
my $filename = $data->filename;
if ($data->package =~ /^Apache::ROOT/)
{
#This is under Apache::Registry, so simply append .dic to the script name
$filename =~ s/^(.*)$/$1.dic/;
}
else {
$filename =~ s/\.[^.]*$/.dic/; #Find the language file
}
$cfg->{DictName} = $filename;
$cfg->{LastModified} = (stat $filename)[9];
my $fh = IO::File->new;
$fh->open($filename) or return L_DECLINED;
local($/) = ""; #read untill empty line
while (<$fh>){
#this should be more carefully validating stuff..
my ($lang, $code) = /([^:]*):(\w+)/ or last;
unless ($code){
warn __PACKAGE__ . ": bad syntax in $filename ($_)";
return L_ERROR;
}
my $string = <$fh> if defined($fh) or "No string found";
$cfg->{DATA}{$code}{$lang} = $string;
}
$fh->close;
return L_OK;
}
1;
__END__
=head1 NAME
Apache::Language::PlainFile - Default LanguageHandler under Apache::Language
=head1 SYNOPSIS
Since it's the default handler, it never needs to be activated.
=head1 DESCRIPTION
( run in 1.116 second using v1.01-cache-2.11-cpan-39bf76dae61 )