File Coverage

blib/lib/Ordeal/Model/Backend/YAML.pm
Criterion Covered Total %
statement 43 47 91.4
branch 2 2 100.0
condition n/a
subroutine 13 14 92.8
pod 2 2 100.0
total 60 65 92.3


line stmt bran cond sub pod time code
1             package Ordeal::Model::Backend::YAML;
2              
3             # vim: ts=3 sts=3 sw=3 et ai :
4              
5 2     2   2221 use 5.020;
  2         7  
6 2     2   10 use strict; # redundant, but still useful to document
  2         4  
  2         39  
7 2     2   10 use warnings;
  2         3  
  2         110  
8             { our $VERSION = '0.004'; }
9 2     2   13 use Mo qw< default builder >;
  2         4  
  2         10  
10 2     2   2037 use Ouch;
  2         6  
  2         11  
11 2     2   133 use Path::Tiny;
  2         4  
  2         81  
12 2     2   1231 use YAML::Tiny qw< LoadFile >;
  2         12143  
  2         136  
13 2     2   537 use autodie;
  2         15491  
  2         11  
14              
15 2     2   12820 use experimental qw< signatures postderef >;
  2         10  
  2         22  
16 2     2   322 no warnings qw< experimental::signatures experimental::postderef >;
  2         5  
  2         122  
17              
18             extends 'Ordeal::Model::Backend::PlainFile';
19              
20 2     2   27 use Ordeal::Model::Deck;
  2         4  
  2         593  
21              
22             has _decks => (is => 'rw', lazy => 1, builder => '_build_decks');
23              
24 2     2 1 18 sub deck ($self, $id) {
  2         4  
  2         4  
  2         3  
25 2 100       9 my $d = $self->_decks->{$id} or ouch 404, "not found: deck '$id'";
26 1         23 $_ = $self->card($_) for $d->{cards}->@*; # turn cards into Cards
27 1         27 return Ordeal::Model::Deck->new(
28             name => $id, # default value
29             group => '', # default value
30             $d->%*, # whatever was read
31             id => $id, # this overrides whatever is in $d->%*
32             );
33             }
34              
35 0     0 1 0 sub decks ($self) { keys $self->_decks->%* }
  0         0  
  0         0  
  0         0  
36              
37 1     1   12 sub _build_decks ($s) {
  1         2  
  1         1  
38 1         9 return LoadFile(path($s->base_directory, 'decks.yml')->stringify);
39             }
40              
41             1;
42             __END__