File Coverage

blib/lib/DateTime/Calendar/Hijri.pm
Criterion Covered Total %
statement 10 12 83.3
branch n/a
condition n/a
subroutine 4 4 100.0
pod n/a
total 14 16 87.5


line stmt bran cond sub pod time code
1             package DateTime::Calendar::Hijri;
2              
3 3     3   76447 use strict;
  3         8  
  3         125  
4              
5 3     3   19 use vars qw($VERSION);
  3         7  
  3         192  
6              
7             $VERSION = '0.00';
8              
9 3     3   4014 use Date::Hijri;
  3         2750  
  3         210  
10 3     3   3593 use Params::Validate qw(validate SCALAR OBJECT);
  0            
  0            
11              
12             sub new {
13             my $class = shift;
14             my %p = validate( @_,
15             { year => {type => SCALAR},
16             month => {type => SCALAR, default => 1},
17             day => {type => SCALAR, default => 1},
18             rd_secs => { type => SCALAR, default => 0},
19             rd_nano => { type => SCALAR, default => 0},
20             } );
21              
22             $p{rd} = Date::Hijri::Islamic2Absolute(@p{qw(day month year)});
23              
24             return bless \%p, $class;
25             }
26              
27             sub year { $_[0]->{year} }
28              
29             sub month { $_[0]->{month} }
30              
31             sub day { $_[0]->{day} }
32              
33             sub datetime {
34             return $_[0]->year .'-'. $_[0]->month .'-'. $_[0]->day .' AH';
35             }
36              
37             sub from_object {
38             my $class = shift;
39             my %p = validate( @_,
40             { object => { type => OBJECT,
41             can => 'utc_rd_values',
42             },
43             } );
44              
45             my %parts;
46             @parts{qw(rd rd_secs rd_nano)} = $p{object}->utc_rd_values;
47             @parts{qw(day month year)} = Date::Hijri::Absolute2Islamic($parts{rd});
48             return bless \%parts, $class;
49             }
50              
51             sub utc_rd_values {
52             my ($self) = @_;
53             return $self->{rd}, $self->{rd_secs}, $self->{rd_nano};
54             }
55              
56             1;
57             __END__