File Coverage

blib/lib/PDF/Make/Builder/Layout.pm
Criterion Covered Total %
statement 27 27 100.0
branch 2 2 100.0
condition 3 4 75.0
subroutine 7 7 100.0
pod 2 2 100.0
total 41 42 97.6


line stmt bran cond sub pod time code
1             package PDF::Make::Builder::Layout;
2 42     42   216 use strict;
  42         84  
  42         1321  
3 42     42   164 use warnings;
  42         62  
  42         1531  
4 42     42   148 use Object::Proto;
  42         53  
  42         1764  
5 42     42   15402 use PDF::Make::Builder::Layout::Row;
  42         88  
  42         2242  
6              
7             BEGIN {
8 42     42   1374 Object::Proto::define('PDF::Make::Builder::Layout',
9             'builder:required',
10             'rows:ArrayRef:default([])',
11             );
12 42         8387 Object::Proto::import_accessors('PDF::Make::Builder::Layout');
13             }
14              
15             sub row {
16 13     13 1 1140 my ($self, %args) = @_;
17 13         21 my $rows = rows $self;
18             my %row_args = (
19             layout => $self,
20             margin => $args{margin} // 5,
21 13   100     79 gap => $args{gap} // 0,
      50        
22             );
23 13 100       32 $row_args{height} = $args{height} if defined $args{height};
24 13         97 push @$rows, PDF::Make::Builder::Layout::Row->new(%row_args);
25 13         37 return $rows->[-1];
26             }
27              
28             sub render {
29 10     10 1 18 my ($self) = @_;
30 10         14 my $builder = builder $self;
31 10         21 my $page = $builder->page;
32              
33 10         14 for my $row (@{rows $self}) {
  10         15  
34 13         31 $row->render($builder, $page);
35             }
36              
37 10         24 return $builder;
38             }
39              
40             1;
41              
42             __END__