File Coverage

blib/lib/Data/Sah/Value/perl/Date/datetime/start_of_this_month_local.pm
Criterion Covered Total %
statement 8 19 42.1
branch 0 6 0.0
condition 0 4 0.0
subroutine 3 5 60.0
pod 0 2 0.0
total 11 36 30.5


line stmt bran cond sub pod time code
1             package Data::Sah::Value::perl::Date::datetime::start_of_this_month_local;
2              
3 1     1   394347 use 5.010001;
  1         3  
4 1     1   5 use strict;
  1         1  
  1         26  
5 1     1   4 use warnings;
  1         1  
  1         232  
6              
7             our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
8             our $DATE = '2023-12-09'; # DATE
9             our $DIST = 'Data-Sah-ValueBundle-Date'; # DIST
10             our $VERSION = '0.003'; # VERSION
11              
12             sub meta {
13             +{
14 0     0 0   v => 1,
15             summary => 'Start of this month (00:00:00 day 1), local time',
16             prio => 50,
17             args => {
18             },
19             };
20             }
21              
22             sub value {
23 0     0 0   my %cargs = @_;
24              
25             #my $gen_args = $cargs{args} // {};
26 0           my $res = {};
27              
28 0   0       $res->{modules}{'Time::Local'} //= 0;
29              
30 0   0       my $coerce_to = $cargs{coerce_to} // 'float(epoch)';
31              
32 0 0         if ($coerce_to eq 'float(epoch)') {
    0          
    0          
33 0           $res->{expr_value} = 'do { my @lt = localtime(); $lt[0] = $lt[1] = $lt[2] = 0; $lt[3] = 1; Time::Local::timelocal_posix(@lt) }';
34             } elsif ($coerce_to eq 'DateTime') {
35 0           $res->{expr_value} = 'do { my @lt = localtime(); DateTime->new(year=>$lt[5]+1900, month=>$lt[4]+1, day=>1, hour=>0, minute=>0, second=>0) }';
36             } elsif ($coerce_to eq 'Time::Moment') {
37 0           $res->{expr_value} = 'do { my $now = Time::Moment->now; Time::Moment->new(year=>$now->year, month=>$now->month, day=>1, hour=>0, minute=>0, second=>0, offset=>$now->offset) }';
38             } else {
39 0           die "Unknown 'coerce_to'";
40             }
41              
42 0           $res;
43             }
44              
45             1;
46             # ABSTRACT:
47              
48             __END__