File Coverage

blib/lib/Mojolicious/Plugin/Notifications/Humane.pm
Criterion Covered Total %
statement 72 72 100.0
branch 18 22 81.8
condition 8 13 61.5
subroutine 10 10 100.0
pod 2 2 100.0
total 110 119 92.4


line stmt bran cond sub pod time code
1             package Mojolicious::Plugin::Notifications::Humane;
2 3     3   2624 use Mojo::Base 'Mojolicious::Plugin::Notifications::Engine';
  3         14  
  3         17  
3 3     3   778 use Mojolicious::Plugin::Notifications::HTML qw/notify_html/;
  3         6  
  3         147  
4 3     3   20 use Mojo::ByteStream 'b';
  3         5  
  3         119  
5 3     3   16 use Mojo::Util qw/xml_escape quote/;
  3         16  
  3         129  
6 3     3   46 use Mojo::JSON qw/encode_json decode_json/;
  3         7  
  3         145  
7 3     3   18 use File::Spec;
  3         6  
  3         68  
8 3     3   24 use File::Basename;
  3         6  
  3         255  
9              
10             has [qw/base_class base_timeout/];
11              
12             state $path = '/humane/';
13              
14 3     3   65 use constant CANCEL_WARN => 'Trying to use cancel with humane engine in M::P::Notifications';
  3         7  
  3         2515  
15              
16             # Register plugin
17             sub register {
18 3     3 1 7 my ($plugin, $app, $param) = @_;
19              
20             # Set config
21 3   50     25 $plugin->base_class( $param->{base_class} // 'libnotify' );
22 3   50     41 $plugin->base_timeout( $param->{base_timeout} // 3000 );
23              
24 3         29 $plugin->scripts( $path . 'humane.min.js');
25 3         9 $plugin->styles( $path . $plugin->base_class . '.css');
26              
27             # Add static path to JavaScript
28 3         7 push @{$app->static->paths},
  3         14  
29             File::Spec->catdir( File::Basename::dirname(__FILE__), 'Humane' );
30             };
31              
32              
33             # Notification method
34             sub notifications {
35 9     9 1 30 my ($self, $c, $notify_array, $rule, @post) = @_;
36              
37 9 100 66     52 my $types = shift @post if ref $post[0] && ref $post[0] eq 'ARRAY';
38              
39 9 50 66     24 return unless @$notify_array || @$types;
40              
41 9   66     40 my $base_class = shift @post // $self->base_class;
42              
43 9         41 my $js = '';
44 9 50       24 unless ($rule->{no_include}) {
45 9         36 $js .= $c->javascript($self->scripts);
46              
47 9 50       6213 unless ($rule->{no_css}) {
48 9         45 $js .= $c->stylesheet($path . $base_class . '.css');
49             };
50             };
51              
52             # Start JavaScript snippet
53 9         5240 $js .= qq{\n" . $noscript . '');
117             };
118              
119              
120             1;
121              
122              
123             __END__