File Coverage

blib/lib/HTML/Widgets/NavMenu/TagGen.pm
Criterion Covered Total %
statement 27 27 100.0
branch 4 4 100.0
condition 2 2 100.0
subroutine 6 6 100.0
pod 1 1 100.0
total 40 40 100.0


line stmt bran cond sub pod time code
1             package HTML::Widgets::NavMenu::TagGen;
2             $HTML::Widgets::NavMenu::TagGen::VERSION = '1.0901';
3 1     1   55632 use strict;
  1         9  
  1         23  
4 1     1   4 use warnings;
  1         2  
  1         22  
5              
6 1     1   355 use parent 'HTML::Widgets::NavMenu::Object';
  1         239  
  1         5  
7              
8 1     1   366 use HTML::Widgets::NavMenu::EscapeHtml qw/ escape_html /;
  1         2  
  1         230  
9              
10             __PACKAGE__->mk_acc_ref( [qw(name attributes)] );
11              
12              
13             sub _init
14             {
15 1     1   3 my ( $self, $args ) = @_;
16              
17 1         6 $self->name( $args->{'name'} );
18 1         3 $self->attributes( $args->{'attributes'} );
19              
20 1         2 return 0;
21             }
22              
23              
24             sub gen
25             {
26 11     11 1 25 my $self = shift;
27              
28 11         13 my $attr_values = shift;
29              
30 11   100     31 my $is_standalone = shift || 0;
31              
32 11         29 my @tag_list = keys(%$attr_values);
33              
34 11         20 @tag_list = ( grep { defined( $attr_values->{$_} ) } @tag_list );
  19         39  
35              
36 11         25 @tag_list = ( sort { $a cmp $b } @tag_list );
  13         22  
37              
38 11         24 my $attr_spec = $self->attributes();
39              
40             return "<" . $self->name() . join(
41             "",
42             map {
43 11 100       29 " $_=\""
44             . (
45             $attr_spec->{$_}->{'escape'}
46             ? escape_html( $attr_values->{$_} )
47 19 100       74 : $attr_values->{$_}
48             )
49             . "\""
50             } @tag_list
51             ) . ( $is_standalone ? " /" : "" ) . ">";
52             }
53              
54             1;
55              
56             __END__