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