File Coverage

blib/lib/DateTime/Format/Strftimeq.pm
Criterion Covered Total %
statement 25 28 89.2
branch 7 10 70.0
condition n/a
subroutine 6 6 100.0
pod 2 2 100.0
total 40 46 86.9


line stmt bran cond sub pod time code
1             package DateTime::Format::Strftimeq;
2              
3             our $DATE = '2019-11-19'; # DATE
4             our $DIST = 'DateTime-Format-Strftimeq'; # DIST
5             our $VERSION = '0.001'; # VERSION
6              
7 1     1   479959 use 5.010001;
  1         9  
8 1     1   5 use strict;
  1         2  
  1         17  
9 1     1   4 use warnings;
  1         2  
  1         21  
10              
11 1     1   386 use DateTimeX::strftimeq;
  1         1231  
  1         189  
12              
13             sub new {
14 3     3 1 7063 my ($class, %args) = @_;
15              
16 3         6 my $self = {};
17              
18 3 100       10 if (defined(my $time_zone = delete $args{time_zone})) {
19 1         2 $self->{time_zone} = do {
20 1 50       3 if (ref $time_zone) {
21 0         0 $time_zone;
22             } else {
23 1         5 require DateTime::TimeZone;
24 1         4 DateTime::TimeZone->new(name => $time_zone);
25             }
26             };
27             }
28              
29 2         4 $self->{format} = delete $args{format};
30 2 100       14 defined $self->{format} or die "Please specify 'format'";
31              
32 1 50       4 if (keys %args) {
33 0         0 die "Unknown attribute(s): ".join(", ", sort keys %args);
34             }
35              
36 1         2 bless $self, $class;
37             }
38              
39             sub format_datetime {
40 2     2 1 944 my ($self, $dt) = @_;
41              
42 2 50       7 if ($self->{time_zone}) {
43 0         0 $dt = $dt->clone->set_time_zone($self->{time_zone});
44             }
45              
46 2         7 strftimeq($self->{format}, $dt);
47             }
48              
49             1;
50             # ABSTRACT: Format DateTime object using DateTimeX::strftimeq
51              
52             __END__
53              
54             =pod
55              
56             =encoding UTF-8
57              
58             =head1 NAME
59              
60             DateTime::Format::Strftimeq - Format DateTime object using DateTimeX::strftimeq
61              
62             =head1 VERSION
63              
64             This document describes version 0.001 of DateTime::Format::Strftimeq (from Perl distribution DateTime-Format-Strftimeq), released on 2019-11-19.
65              
66             =head1 SYNOPSIS
67              
68             use DateTime::Format::Strftimeq;
69              
70             my $format = DateTime::Format::Strftimeq->new(
71             # time_zone => '...', # optional, default is DateTime object's time zone
72             format => '%Y-%m-%d%( $_->day_of_week == 7 ? "su" : "" )q',
73             );
74              
75             my $dt1 = DateTime->new(year=>2019, month=>11, day=>19);
76             my $dt1 = DateTime->new(year=>2019, month=>11, day=>24);
77              
78             say $format->format_datetime($dt1); # 2019-11-19
79             say $format->format_datetime($dt1); # 2019-11-24su
80              
81             =head1 DESCRIPTION
82              
83             This module formats L<DateTime> objects using L<DateTimeX::strftimeq>.
84              
85             =head1 ATTRIBUTES
86              
87             =head2 format
88              
89             Required. Will be passed to strftimeq.
90              
91             =head2 time_zone
92              
93             Optional. Used to force the time zone of DateTime objects to be formatted.
94             Either string containing time zone name (e.g. "Asia/Jakarta", "UTC") or
95             L<DateTime::TimeZone> object. Will be converted to DateTime::TimeZone
96             internally.
97              
98             The default is to use the DateTime object's time zone.
99              
100             =head1 METHODS
101              
102             =head2 new
103              
104             Usage:
105              
106             DateTime::Format::ISO8601::Format->new(%attrs) => obj
107              
108             =head2 format_datetime
109              
110             Usage:
111              
112             $format->format_datetime($dt) => str
113              
114             =head1 HOMEPAGE
115              
116             Please visit the project's homepage at L<https://metacpan.org/release/DateTime-Format-Strftimeq>.
117              
118             =head1 SOURCE
119              
120             Source repository is at L<https://github.com/perlancar/perl-DateTime-Format-Strftimeq>.
121              
122             =head1 BUGS
123              
124             Please report any bugs or feature requests on the bugtracker website L<https://rt.cpan.org/Public/Dist/Display.html?Name=DateTime-Format-Strftimeq>
125              
126             When submitting a bug or request, please include a test-file or a
127             patch to an existing test-file that illustrates the bug or desired
128             feature.
129              
130             =head1 SEE ALSO
131              
132             L<DateTimeX::strftimeq>
133              
134             =head1 AUTHOR
135              
136             perlancar <perlancar@cpan.org>
137              
138             =head1 COPYRIGHT AND LICENSE
139              
140             This software is copyright (c) 2019 by perlancar@cpan.org.
141              
142             This is free software; you can redistribute it and/or modify it under
143             the same terms as the Perl 5 programming language system itself.
144              
145             =cut