File Coverage

blib/lib/Mojo/Debugbar/Monitors.pm
Criterion Covered Total %
statement 9 30 30.0
branch 0 2 0.0
condition 0 3 0.0
subroutine 3 7 42.8
pod 4 4 100.0
total 16 46 34.7


line stmt bran cond sub pod time code
1             package Mojo::Debugbar::Monitors;
2 1     1   7 use Mojo::Base -base;
  1         3  
  1         8  
3              
4 1     1   153 use Mojo::Util qw(md5_sum);
  1         2  
  1         91  
5 1     1   6 use Time::HiRes qw(time);
  1         3  
  1         8  
6              
7             has 'css' => <<'EOF'
8            
61             EOF
62             ;
63             has 'javascript' => <<'EOF'
64            
81             EOF
82             ;
83             has 'registered' => sub { [] };
84             has 'hide_empty' => 0;
85             has 'started_at' => sub { time() };
86             has 'ended_at' => sub { time() };
87              
88             =head2 duration
89             Ended at - started at
90             =cut
91              
92             sub duration {
93 0     0 1   my $self = shift;
94              
95 0           return sprintf("%.4f", $self->ended_at - $self->started_at);
96             }
97              
98             =head2 render
99             Loops through each monitor and renders the html
100             =cut
101              
102             sub render {
103 0     0 1   my $self = shift;
104              
105 0           my $tabs = '';
106 0           my $content = '';
107              
108 0           foreach my $monitor (@{ $self->registered }) {
  0            
109 0           my $count = $monitor->count;
110              
111 0 0 0       next if ($self->hide_empty && !$count);
112              
113 0           my $id = md5_sum(ref($monitor));
114              
115 0           $tabs .= sprintf('
116             '%s %s (%s)' +
117             '', $id, $monitor->icon, $monitor->name, $count);
118              
119 0           $content .= sprintf('
%s
', $id, $monitor->render);
120             }
121              
122 0           return sprintf(
123             '%s
124            
125            
126            
127            
128            
129            
130            
131            
132            
133            
134            
135            
136            
137            
138            
%s
139            
140            
141             %s',
142             $self->css, $tabs, $self->duration, $content, $self->javascript
143             );
144             }
145              
146             =head2 stop
147             Loops through each monitor and calls stop then stops the timer
148             =cut
149              
150             sub stop {
151 0     0 1   my $self = shift;
152              
153 0           $_->stop for @{ $self->registered };
  0            
154              
155 0           $self->ended_at(time());
156             }
157              
158             =head2 start
159             Starts the timer and loops through each monitor and calls start
160             =cut
161              
162             sub start {
163 0     0 1   my $self = shift;
164              
165 0           $self->started_at(time());
166              
167 0           $_->start for @{ $self->registered };
  0            
168             }
169              
170             1;