File Coverage

blib/lib/HTML/Widget/BlockContainer.pm
Criterion Covered Total %
statement 27 30 90.0
branch 5 10 50.0
condition 1 2 50.0
subroutine 6 6 100.0
pod n/a
total 39 48 81.2


line stmt bran cond sub pod time code
1             package HTML::Widget::BlockContainer;
2              
3 36     36   389 use warnings;
  36         413  
  36         1385  
4 36     36   205 use strict;
  36         78  
  36         1413  
5 36     36   213 use base 'HTML::Widget::Container';
  36         74  
  36         4111  
6 36     36   215 use Carp qw/croak/;
  36         77  
  36         12342  
7              
8             __PACKAGE__->mk_accessors(qw/content pre_content post_content wrap_sub/);
9              
10             =head1 NAME
11              
12             HTML::Widget::BlockContainer - Block Container
13              
14             =head1 DESCRIPTION
15              
16             A Container for Block elements. See L
17             and L.
18              
19             =head1 METHODS
20              
21             =cut
22              
23             sub _build_element {
24 98     98   640 my ( $self, $element ) = @_;
25              
26 98 50       350 return () unless $element;
27 98 50       348 if ( ref $element eq 'ARRAY' ) {
28 0         0 croak("Not expecting an array");
29             }
30              
31 98   50 274   359 my $wrap_sub = $self->wrap_sub || sub { return (@_); };
  274         1017  
32              
33 98         1376 my $e = $element->clone;
34 98 50       2022 $e->push_content( @{ $self->pre_content } ) if $self->pre_content;
  98         709  
35 98         990 $e->push_content( map { &$wrap_sub( $_->as_list ); } @{ $self->content } );
  274         1350  
  98         533  
36 98 50       3717 $e->push_content( @{ $self->post_content } ) if $self->post_content;
  98         944  
37              
38 98 50       1079 if ( $self->label ) {
39 0         0 my $l = $self->label->clone;
40 0         0 $e = $l->push_content($e);
41             }
42              
43 98         1127 return ($e);
44             }
45              
46             =head1 AUTHOR
47              
48             Michael Gray, C
49              
50             =cut
51              
52             1;