File Coverage

blib/lib/Zodiac/Angle.pm
Criterion Covered Total %
statement 27 30 90.0
branch n/a
condition n/a
subroutine 7 8 87.5
pod 3 3 100.0
total 37 41 90.2


line stmt bran cond sub pod time code
1             package Zodiac::Angle;
2              
3 4     4   298862 use strict;
  4         38  
  4         115  
4 4     4   19 use warnings;
  4         7  
  4         150  
5              
6 4     4   1990 use Class::Utils qw(set_params);
  4         112260  
  4         82  
7 4     4   345 use Readonly;
  4         10  
  4         168  
8 4     4   1487 use Unicode::UTF8 qw(decode_utf8);
  4         1369  
  4         1352  
9              
10             Readonly::Hash our %ZODIAC => (
11             1 => decode_utf8('♈'),
12             2 => decode_utf8('♉'),
13             3 => decode_utf8('♊'),
14             4 => decode_utf8('♋'),
15             5 => decode_utf8('♌'),
16             6 => decode_utf8('♍'),
17             7 => decode_utf8('♎'),
18             8 => decode_utf8('♏'),
19             9 => decode_utf8('♐'),
20             10 => decode_utf8('♑'),
21             11 => decode_utf8('♒'),
22             12 => decode_utf8('♓'),
23             );
24              
25             our $VERSION = 0.01;
26              
27             # Constructor.
28             sub new {
29 2     2 1 174 my ($class, @params) = @_;
30              
31             # Create object.
32 2         9 my $self = bless {}, $class;
33              
34             # Process parameters.
35 2         10 set_params($self, @params);
36              
37 2         20 return $self;
38             }
39              
40             sub angle2zodiac {
41 2     2 1 804 my ($self, $angle) = @_;
42              
43 2         7 my $angle_degree = int($angle);
44 2         6 $angle -= $angle_degree;
45 2         4 $angle *= 60;
46 2         4 my $angle_minute = int($angle);
47 2         4 my $sign = int($angle_degree / 30);
48              
49             my $zodiac_angle = $angle_degree.decode_utf8('°').
50 2         22 $ZODIAC{$sign + 1}.$angle_minute.decode_utf8("′");
51              
52 2         30 return $zodiac_angle;
53             }
54              
55             sub zodiac2angle {
56 0     0 1   my ($self, $zodiac_angle) = @_;
57              
58             # TODO
59 0           my $angle;
60              
61 0           return $angle;
62             }
63              
64             1;
65              
66             __END__