File Coverage

blib/lib/HTML/Zoom/Producer/BuiltIn.pm
Criterion Covered Total %
statement 20 21 95.2
branch 12 14 85.7
condition n/a
subroutine 5 5 100.0
pod 0 3 0.0
total 37 43 86.0


line stmt bran cond sub pod time code
1             package HTML::Zoom::Producer::BuiltIn;
2              
3 13     13   471 use strictures 1;
  13         86  
  13         309  
4 13     13   967 use base qw(HTML::Zoom::SubObject);
  13         26  
  13         4084  
5              
6             sub html_from_stream {
7 84     84 0 106 my ($self, $stream) = @_;
8             return
9 84         268 join '',
10             map $self->event_to_html($_),
11             $self->_zconfig->stream_utils->stream_to_array($stream)
12             }
13              
14             sub html_from_events {
15 2     2 0 8 my ($self, $events) = @_;
16 2         7 join '', map $self->event_to_html($_), @$events;
17             }
18              
19             sub event_to_html {
20 1242     1242 0 1052 my ($self, $evt) = @_;
21             # big expression
22 1242 100       1662 if (defined $evt->{raw}) {
    100          
    100          
    50          
23 1199         2603 $evt->{raw}
24             } elsif ($evt->{type} eq 'OPEN') {
25             '<'
26             .$evt->{name}
27             .(defined $evt->{raw_attrs}
28             ? $evt->{raw_attrs}
29 38 100       96 : do {
    100          
30 36         33 my @names = @{$evt->{attr_names}};
  36         76  
31             @names
32 36 50       94 ? join(' ', '', map qq{${_}="${\$evt->{attrs}{$_}}"}, @names)
  60         257  
33             : ''
34             }
35             )
36             .($evt->{is_in_place_close} ? ' /' : '')
37             .'>'
38             } elsif ($evt->{type} eq 'CLOSE') {
39 4         12 '{name}.'>'
40             } elsif ($evt->{type} eq 'EMPTY') {
41 1         2 ''
42             } else {
43 0           die "No raw value in event and no special handling for type ".$evt->{type};
44             }
45             }
46              
47             1;