File Coverage

blib/lib/HTML/Widgets/NavMenu/Iterator/Html.pm
Criterion Covered Total %
statement 47 47 100.0
branch 12 12 100.0
condition 3 3 100.0
subroutine 13 13 100.0
pod 5 5 100.0
total 80 80 100.0


line stmt bran cond sub pod time code
1             package HTML::Widgets::NavMenu::Iterator::Html;
2             $HTML::Widgets::NavMenu::Iterator::Html::VERSION = '1.0901';
3 11     11   4743 use strict;
  11         20  
  11         257  
4 11     11   63 use warnings;
  11         21  
  11         249  
5              
6 11     11   4115 use HTML::Widgets::NavMenu::Iterator::Html::Item ();
  11         28  
  11         218  
7              
8              
9 11     11   63 use parent qw(HTML::Widgets::NavMenu::Iterator::Base);
  11         23  
  11         41  
10              
11 11     11   4619 use HTML::Widgets::NavMenu::EscapeHtml qw/ escape_html /;
  11         22  
  11         5532  
12              
13             sub _construct_new_item
14             {
15 941     941   1380 my $self = shift;
16 941         1092 my $args = shift;
17              
18 941         1809 return HTML::Widgets::NavMenu::Iterator::Html::Item->new( $args, );
19             }
20              
21              
22             sub _is_top_separator
23             {
24 494     494   961 return $_[0]->top->{_node}->{separator};
25             }
26              
27             sub node_start
28             {
29 297     297 1 377 my $self = shift;
30              
31 297 100       722 if ( $self->{_is_root} )
    100          
32             {
33 50         125 return $self->_start_root();
34             }
35             elsif ( $self->_is_top_separator() )
36             {
37             # _start_sep() is short for start_separator().
38 3         14 return $self->_start_sep();
39             }
40             else
41             {
42 244         487 return $self->_start_regular();
43             }
44             }
45              
46              
47             sub node_end
48             {
49 297     297 1 371 my $self = shift;
50              
51 297 100       556 if ( $self->{_is_root} )
    100          
52             {
53 50         154 return $self->end_root();
54             }
55             elsif ( $self->_is_top_separator() )
56             {
57 3         18 return $self->_end_sep();
58             }
59             else
60             {
61 244         448 return $self->_end_regular();
62             }
63             }
64              
65              
66             sub end_root
67             {
68 50     50 1 71 my $self = shift;
69              
70 50         99 $self->_add_tags("");
71             }
72              
73             sub _end_regular
74             {
75 236     236   306 my $self = shift;
76 236 100 100     419 if ( $self->top()->_num_subs() && $self->_is_expanded() )
77             {
78 51         127 $self->_add_tags("");
79             }
80 236         465 $self->_add_tags("");
81             }
82              
83              
84             sub node_should_recurse
85             {
86 544     544 1 711 my $self = shift;
87 544         904 return $self->_is_expanded();
88             }
89              
90              
91             # Get the HTML tag.
92             #
93             sub get_a_tag
94             {
95 215     215 1 295 my $self = shift;
96 215         354 my $item = $self->top();
97 215         305 my $node = $item->_node;
98              
99 215         271 my $tag = "
100 215         347 my $title = $node->title;
101              
102 215         616 $tag .= " href=\""
103             . escape_html( $self->nav_menu()->_get_url_to_item($item) ) . "\"";
104 215 100       591 if ( defined($title) )
105             {
106 71         141 $tag .= " title=\"$title\"";
107             }
108 215         517 $tag .= ">" . $node->text() . "";
109 215         603 return $tag;
110             }
111              
112              
113             1;
114              
115             __END__