| File: | local/lib/perl5/Data/Printer/Filter/DateTime.pm |
| Coverage: | 59.3% |
| line | stmt | bran | cond | sub | time | code |
|---|---|---|---|---|---|---|
| 1 | package Data::Printer::Filter::DateTime; | |||||
| 2 | 2 2 2 | 5 1 30 | use strict; | |||
| 3 | 2 2 2 | 3 2 17 | use warnings; | |||
| 4 | 2 2 2 | 4 1 5 | use Data::Printer::Filter; | |||
| 5 | 2 2 2 | 4 1 495 | use Term::ANSIColor; | |||
| 6 | ||||||
| 7 | filter 'Time::Piece', sub { | |||||
| 8 | return _format($_[0]->cdate, @_ ); | |||||
| 9 | }; | |||||
| 10 | ||||||
| 11 | filter 'DateTime', sub { | |||||
| 12 | my ($obj, $p) = @_; | |||||
| 13 | my $string = "$obj"; | |||||
| 14 | if ( not exists $p->{datetime}{show_timezone} or $p->{datetime}{show_timezone} ) { | |||||
| 15 | $string .= ' [' . $obj->time_zone->name . ']'; | |||||
| 16 | } | |||||
| 17 | return _format( $string, @_ ); | |||||
| 18 | }; | |||||
| 19 | ||||||
| 20 | # DateTime::TimeZone filters | |||||
| 21 | filter '-class' => sub { | |||||
| 22 | my ($obj, $properties) = @_; | |||||
| 23 | ||||||
| 24 | if ( $obj->isa('DateTime::TimeZone' ) ) { | |||||
| 25 | return $obj->name; | |||||
| 26 | } | |||||
| 27 | else { | |||||
| 28 | return; | |||||
| 29 | } | |||||
| 30 | }; | |||||
| 31 | ||||||
| 32 | filter 'DateTime::Incomplete', sub { | |||||
| 33 | return _format( $_[0]->iso8601, @_ ); | |||||
| 34 | }; | |||||
| 35 | ||||||
| 36 | filter 'DateTime::Duration', sub { | |||||
| 37 | my ($object, $p) = @_; | |||||
| 38 | ||||||
| 39 | my @dur = $object->in_units( | |||||
| 40 | qw(years months days hours minutes seconds) | |||||
| 41 | ); | |||||
| 42 | ||||||
| 43 | my $string = "$dur[0]y $dur[1]m $dur[2]d $dur[3]h $dur[4]m $dur[5]s"; | |||||
| 44 | ||||||
| 45 | return _format( $string, @_ ); | |||||
| 46 | }; | |||||
| 47 | ||||||
| 48 | filter 'DateTime::Tiny', sub { | |||||
| 49 | return _format( $_[0]->as_string, @_ ); | |||||
| 50 | }; | |||||
| 51 | ||||||
| 52 | filter 'Date::Calc::Object', sub { | |||||
| 53 | return _format( $_[0]->string(2), @_ ); | |||||
| 54 | }; | |||||
| 55 | ||||||
| 56 | filter 'Date::Pcalc::Object', sub { | |||||
| 57 | return _format( $_[0]->string(2), @_ ); | |||||
| 58 | }; | |||||
| 59 | ||||||
| 60 | filter 'Date::Handler', sub { | |||||
| 61 | return _format( "$_[0]", @_ ); | |||||
| 62 | }; | |||||
| 63 | ||||||
| 64 | filter 'Date::Handler::Delta', sub { | |||||
| 65 | return _format( $_[0]->AsScalar, @_ ); | |||||
| 66 | }; | |||||
| 67 | ||||||
| 68 | ||||||
| 69 | sub _format { | |||||
| 70 | 0 | my ($str, $obj, $p) = @_; | ||||
| 71 | ||||||
| 72 | 0 | if ( $p->{datetime}{show_class_name} ) { | ||||
| 73 | 0 | $str .= ' (' . ref($obj) . ')'; | ||||
| 74 | } | |||||
| 75 | ||||||
| 76 | 0 | my $color = $p->{color}{datetime}; | ||||
| 77 | 0 | $color = 'bright_green' unless defined $color; | ||||
| 78 | ||||||
| 79 | 0 | return colored( $str, $color ); | ||||
| 80 | } | |||||
| 81 | ||||||
| 82 | 1; | |||||
| 83 | ||||||