Time-Elapsed
view release on metacpan or search on metacpan
lib/Time/Elapsed.pm view on Meta::CPAN
my $id = $e->{ $r->[INDEX] }[INDEX];
my $up = $n->[ $id + 1 ]
|| die "Can not happen: unable to locate top-level\n";
unshift @top, [ $up, $add ];
}
}
unshift @fixed, [ $r->[INDEX], $r->[MULTIPLIER] ];
}
unshift @fixed, @top;
return @fixed;
}
sub _parser { # recursive formatter/parser
my($weeks, $id, $mul) = @_;
my $e = $weeks ? $ELAPSED_W : $ELAPSED;
my $n = $weeks ? $NAMES_W : $NAMES;
my $xmid = $e->{ $id }[INDEX];
my @parsed = [ $id, $xmid ? int $mul : sprintf '%.0f', $mul ];
if ( $xmid ) {
push @parsed, _parser(
$weeks,
$n->[ $xmid - 1 ],
($mul - int $mul) * $e->{$id}[MULTIPLIER]
);
}
return @parsed;
}
sub _examine {
my($sec, $weeks) = @_;
return
$sec >= YEAR ? ( year => $sec / YEAR )
: $sec >= MONTH ? ( month => $sec / MONTH )
: $sec >= WEEK && $weeks ? ( week => $sec / WEEK )
: $sec >= DAY ? ( day => $sec / DAY )
: $sec >= HOUR ? ( hour => $sec / HOUR )
: $sec >= MINUTE ? ( minute => $sec / MINUTE )
: ( second => $sec )
;
}
sub _get_lang {
my $lang = shift || croak '_get_lang(): Language ID is missing';
$lang = uc $lang;
if ( ! exists $LCACHE->{ $lang } ) {
if ( $lang =~ m{[^a-z_A-Z_0-9]}xms || $lang =~ m{ \A [0-9] }xms ) {
croak "Bad language identifier: $lang";
}
_set_lang_cache( $lang );
}
return $LCACHE->{ $lang };
}
sub _set_lang_cache {
my($lang) = @_;
my $class = join q{::}, __PACKAGE__, 'Lang', $lang;
my $file = join(q{/} , split m{::}xms, $class ) . '.pm';
require $file;
$LCACHE->{ $lang } = {
singular => { $class->singular },
plural => { $class->plural },
other => { $class->other },
};
return;
}
sub _compile_all {
require File::Spec;
require Symbol;
my($test, %lang);
# search lib paths
foreach my $lib ( @INC ) {
$test = File::Spec->catfile( $lib, qw/ Time Elapsed Lang /);
next if not -d $test;
my $LDIR = Symbol::gensym();
opendir $LDIR, $test or croak "opendir($test): $!";
while ( my $file = readdir $LDIR ) {
next if -d $file;
if ( $file =~ m{ \A (.+?) \. pm \z }xms ) {
$lang{ uc $1 }++;
}
}
closedir $LDIR;
}
# compile language data
foreach my $id ( keys %lang ) {
_get_lang( $id );
}
return 1;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Time::Elapsed
=head1 VERSION
version 0.34
=head1 SYNOPSIS
use Time::Elapsed qw( elapsed );
$t = 1868401;
print elapsed( $t );
( run in 1.092 second using v1.01-cache-2.11-cpan-71847e10f99 )