File Coverage

blib/lib/Date/Japanese/Era/Table/Builder.pm
Criterion Covered Total %
statement 31 31 100.0
branch 6 6 100.0
condition n/a
subroutine 6 6 100.0
pod 1 1 100.0
total 44 44 100.0


line stmt bran cond sub pod time code
1             package Date::Japanese::Era::Table::Builder;
2              
3 3     3   174268 use strict;
  3         22  
  3         81  
4 3     3   13 use vars qw($VERSION);
  3         7  
  3         147  
5             $VERSION = '0.02';
6              
7 3     3   15 use vars qw(@ISA @EXPORT %ERA_TABLE %ERA_JA2ASCII %ERA_ASCII2JA);
  3         5  
  3         221  
8             require Exporter;
9             @ISA = qw(Exporter);
10             @EXPORT = qw(%ERA_TABLE %ERA_JA2ASCII %ERA_ASCII2JA build_table);
11              
12 3     3   18 use Carp;
  3         4  
  3         346  
13              
14             sub build_table {
15 5     5 1 2513 my @eras;
16              
17 5         16 while (my $era = pop) {
18 17 100       119 @$era == 5 or croak "Argument Error: Invalid era specification found: (@$era). 5 entries expected.";
19              
20 16 100       30 if (@eras) {
21 3     3   1289 use Date::Simple qw/ymd/;
  3         17115  
  3         617  
22              
23 12         31 my $end_date = ymd($eras[0][2], $eras[0][3], $eras[0][4]) - 1;
24 12         370 my $begin_date = ymd($era->[2], $era->[3], $era->[4]);
25              
26 12 100       363 $begin_date <= $end_date or croak "Argument error: The era ".$era->[1]." is later than ".$eras[0][1].", but specified before it.\n";
27              
28 10         50 push @$era, $end_date->year, $end_date->month, $end_date->day;
29             } else {
30 4         11 push @$era, 9999, 12, 31;
31             }
32              
33 14         77 unshift @eras, $era;
34             }
35              
36 2         6 for my $era (@eras) {
37 10         15 my $kanji = shift @$era;
38              
39 10         21 $ERA_TABLE{$kanji} = $era;
40             }
41              
42 2         9 %ERA_JA2ASCII = map { $_ => $ERA_TABLE{$_}->[0] } keys %ERA_TABLE;
  10         23  
43 2         12 %ERA_ASCII2JA = reverse %ERA_JA2ASCII;
44             }
45              
46             1;
47             __END__