—package
Mojolicious::Plugin::TimeAgo;
# imports
# version
our
$VERSION
= 0.06;
sub
register {
my
(
$self
,
$app
,
$attrs
) =
@_
;
# attributes
my
$default_lang
=
$attrs
->{
default
} ||
'en'
;
$app
->hook(
before_dispatch
=>
sub
{
$_
[0]->stash(
lang_default
=>
$default_lang
)
unless
$_
[0]->stash(
'lang_default'
);
}
);
# add "time_ago" helper
$app
->helper(
time_ago
=>
sub
{
my
(
$c
,
$dt
) =
@_
;
my
$ago
= DateTimeX::Format::Ago->new(
language
=>
$c
->stash(
'lang_default'
)
);
return
$ago
->format_datetime(
$dt
)
if
$dt
&&
$dt
->isa(
'DateTime'
);
}
);
}
1;
__END__
=pod
=encoding utf8
=head1 NAME
Mojolicious::Plugin::TimeAgo - DateTime TimeAgo Mojolicious Plugin
=head1 VERSION
version 0.6
=head1 SYNOPSIS
# Mojolicious
$self->plugin(
TimeAgo => { default => 'en' }
);
# Mojolicious::Lite
plugin TimeAgo => { default => 'en' };
=head1 DESCRIPTION
L<Mojolicious::Plugin::TimeAgo> is a L<Mojolicious> plugin that
provide a feature to convert DateTime objects to "just now"
string, for example.
It's a simple wrapper about L<DateTimeX::Format::Ago> module
class.
=head1 METHODS
=head2 time_ago([DateTime obj])
Method that translate you L<DateTime> object into human readaable
string.
# Mojolicious::Controller
my $date = $self->time_ago( DateTime->now );
or ...
# view template
%= time_ago DateTime->now
<%= time_ago DateTime->now %>
=head1 CONFIGURATION
=head2 default
C<default> is the language configuration that your DateTime will be
translated.
See more about language in L<DateTimeX::Format::Ago>.
=head1 TODO
* [done] Language support
* [done] Get and use language by stash
* Integration with I18N mojolicious plugin
=head1 BUGS AND ISSUES
Please report any bugs or feature requests at
=head1 AUTHOR
Daniel Vinciguerra <daniel.vinciguerra@bivee.com.br>
=head1 LICENSE AND COPYRIGHT
Copyright 2014-2016 Daniel Vinciguerra <dvinci at cpan.org>.
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.
=head1 SEE ALSO
L<Mojolicious>, L<Mojolicious::Guides>, L<http://mojolicio.us>.
=cut