File Coverage

blib/lib/Acme/Resume/Types.pm
Criterion Covered Total %
statement 69 79 87.3
branch n/a
condition n/a
subroutine 15 15 100.0
pod n/a
total 84 94 89.3


line stmt bran cond sub pod time code
1 1     1   7 use Moops;
  1         3  
  1         8  
2 1     1   63986 use strict;
  1         2  
  1         26  
3 1     1   5 use warnings;
  1         2  
  1         57  
4              
5             # ABSTRACT: Declares types
6             # PODNAME: Acme::Resume::Types
7             our $VERSION = '0.0104';
8              
9 1     1   23078 library Acme::Resume::Types
  1     1   46  
  1     1   24  
  1     1   3  
  1     1   60  
  1     1   512  
  1     1   2154  
  1     1   4  
  1     1   1910  
  1     1   2  
  1     1   11  
  1         142  
  1         2  
  1         66  
  1         7  
  1         2  
  1         116  
  1         39  
  1         7  
  1         2  
  1         22  
  1         5847  
  1         3033  
  1         8  
  1         127197  
  1         4  
  1         5  
  1         10  
  1         25  
  1         5  
  1         2  
  1         56  
  1         8  
  1         19  
  1         160  
  1         13  
  1         3  
  1         19  
  1         1171  
  1         4  
  1         20  
  1         207  
10              
11             declares
12             Education,
13             Educations,
14             Job,
15             Jobs,
16             TimeMoment {
17              
18 1         29 class_type TimeMoment => { class => 'Time::Moment' };
19 1         1538 class_type Education => { class => 'Acme::Resume::Types::Education' };
20 1         1078 class_type Job => { class => 'Acme::Resume::Types::Job' };
21              
22             coerce Education,
23             from HashRef,
24             via {
25 0         0 'Acme::Resume::Types::Education'->new(%$_);
26 1         1010 };
27              
28             coerce Job,
29             from HashRef,
30             via {
31 0         0 'Acme::Resume::Types::Job'->new(%$_);
32 1         430 };
33              
34             declare Educations,
35             as ArrayRef[Education],
36 1         281 message { sprintf "Those are not Education objects." };
  0         0  
37              
38             coerce Educations,
39             from ArrayRef[HashRef],
40 1         5564 via { [ map { 'Acme::Resume::Types::Education'->new($_) } @$_ ] };
  0         0  
  0         0  
41              
42             coerce Educations,
43             from HashRef,
44 1         781 via { [ 'Acme::Resume::Types::Education'->new(%$_) ] };
  0         0  
45              
46              
47             declare Jobs,
48             as ArrayRef[Job],
49 1         160 message { sprintf "Those are not Job objects." };
  0         0  
50              
51             coerce Jobs,
52             from ArrayRef[HashRef],
53 1         1677 via { [ map { 'Acme::Resume::Types::Job'->new($_) } @$_ ] };
  0         0  
  0         0  
54              
55             coerce Jobs,
56             from HashRef,
57 1         410 via { [ 'Acme::Resume::Types::Job'->new(%$_) ] };
  0         0  
58              
59              
60             coerce TimeMoment,
61             from Str,
62             via {
63 10         165 $_ =~ m{^(?<month>\w*) \s # full month name
64             (?<day>\d{1,2}), \s # day of month
65             (?<year>\d{4}) # year
66             }x;
67              
68 10         119 my %months = (January => 1, February => 2, March => 3, April => 4, May => 5, June => 6, July => 7, August => 8, September => 9, October => 10, November => 11, December => 12);
69              
70 1     1   3717 'Time::Moment'->new(year => $+{'year'},
  1         506  
  1         72  
71             month => $months{ $+{'month'} },
72 10         594 day => $+{'day'},
73             );
74 1         165 };
75             }
76              
77             1;
78              
79             __END__
80              
81             =pod
82              
83             =encoding UTF-8
84              
85             =head1 NAME
86              
87             Acme::Resume::Types - Declares types
88              
89             =head1 VERSION
90              
91             Version 0.0104, released 2021-08-31.
92              
93             =head1 SOURCE
94              
95             L<https://github.com/Csson/p5-Acme-Resume>
96              
97             =head1 HOMEPAGE
98              
99             L<https://metacpan.org/release/Acme-Resume>
100              
101             =head1 AUTHOR
102              
103             Erik Carlsson <info@code301.com>
104              
105             =head1 COPYRIGHT AND LICENSE
106              
107             This software is copyright (c) 2021 by Erik Carlsson.
108              
109             This is free software; you can redistribute it and/or modify it under
110             the same terms as the Perl 5 programming language system itself.
111              
112             =cut