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   10 use Moops;
  1         2  
  1         11  
2 1     1   73046 use strict;
  1         3  
  1         39  
3 1     1   8 use warnings;
  1         3  
  1         90  
4              
5             # ABSTRACT: Declares types
6             # PODNAME: Acme::Resume::Types
7             our $VERSION = '0.0105';
8              
9 1     1   28656 library Acme::Resume::Types
  1     1   44  
  1     1   10  
  1     1   3  
  1     1   105  
  1     1   744  
  1     1   2367  
  1     1   5  
  1     1   2193  
  1     1   3  
  1     1   10  
  1         150  
  1         3  
  1         89  
  1         6  
  1         3  
  1         142  
  1         47  
  1         7  
  1         2  
  1         10  
  1         6855  
  1         3440  
  1         13  
  1         141650  
  1         4  
  1         7  
  1         3  
  1         54  
  1         8  
  1         2  
  1         52  
  1         6  
  1         2  
  1         148  
  1         8  
  1         3  
  1         21  
  1         1070  
  1         4  
  1         8  
  1         177  
10              
11             declares
12             Education,
13             Educations,
14             Job,
15             Jobs,
16             TimeMoment {
17              
18 1         20 class_type TimeMoment => { class => 'Time::Moment' };
19 1         1605 class_type Education => { class => 'Acme::Resume::Types::Education' };
20 1         1089 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         1140 };
27              
28             coerce Job,
29             from HashRef,
30             via {
31 0         0 'Acme::Resume::Types::Job'->new(%$_);
32 1         341 };
33              
34             declare Educations,
35             as ArrayRef[Education],
36 1         301 message { sprintf "Those are not Education objects." };
  0         0  
37              
38             coerce Educations,
39             from ArrayRef[HashRef],
40 1         5594 via { [ map { 'Acme::Resume::Types::Education'->new($_) } @$_ ] };
  0         0  
  0         0  
41              
42             coerce Educations,
43             from HashRef,
44 1         871 via { [ 'Acme::Resume::Types::Education'->new(%$_) ] };
  0         0  
45              
46              
47             declare Jobs,
48             as ArrayRef[Job],
49 1         213 message { sprintf "Those are not Job objects." };
  0         0  
50              
51             coerce Jobs,
52             from ArrayRef[HashRef],
53 1         2072 via { [ map { 'Acme::Resume::Types::Job'->new($_) } @$_ ] };
  0         0  
  0         0  
54              
55             coerce Jobs,
56             from HashRef,
57 1         471 via { [ 'Acme::Resume::Types::Job'->new(%$_) ] };
  0         0  
58              
59              
60             coerce TimeMoment,
61             from Str,
62             via {
63 10         123 $_ =~ 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         71 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   4182 'Time::Moment'->new(year => $+{'year'},
  1         567  
  1         83  
71             month => $months{ $+{'month'} },
72 10         493 day => $+{'day'},
73             );
74 1         163 };
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.0105, released 2021-09-29.
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