File Coverage

blib/lib/Log/Dispatch/MacGrowl.pm
Criterion Covered Total %
statement 39 48 81.2
branch 3 6 50.0
condition 3 8 37.5
subroutine 12 13 92.3
pod 1 1 100.0
total 58 76 76.3


line stmt bran cond sub pod time code
1             #
2              
3             package Log::Dispatch::MacGrowl;
4              
5 3     3   128529 use strict;
  3         10  
  3         114  
6 3     3   85 use 5.005;
  3         10  
  3         148  
7 3     3   21 use vars qw($VERSION @ISA);
  3         10  
  3         197  
8 3     3   17 use base qw(Log::Dispatch::Output);
  3         6  
  3         3323  
9 3     3   21994 use File::Basename ();
  3         8  
  3         64  
10 3     3   17 use Params::Validate qw(validate SCALAR BOOLEAN);
  3         4  
  3         313  
11             Params::Validate::validation_options( allow_extra => 1 );
12              
13             $VERSION = '0.04';
14              
15             BEGIN {
16 3 50   3   282 if( eval "use Cocoa::Growl; 1" ){
  3 50   3   1357  
  0     3   0  
  0         0  
  3         1128  
  0         0  
  0         0  
17 0         0 eval q{ use base "Log::Dispatch::MacGrowl::Cocoa" };
18             }
19             elsif( eval "use Growl::Tiny; 1" ){
20 0         0 eval q{ use base "Log::Dispatch::MacGrowl::Tiny" };
21             }
22             else{
23 3     3   295 eval q{ use base "Log::Dispatch::MacGrowl::Mac" };
  3         16  
  3         7  
  3         1947  
24             }
25             }
26              
27             sub new {
28 2     2 1 875 my $param = shift;
29 2   33     18 my $class = ref $param || $param;
30              
31 2         8 my $self = bless {}, $class;
32              
33 2         26 $self->_basic_init(@_);
34 2         303 $self->_init(@_);
35              
36 0         0 return $self;
37             }
38              
39             sub _init {
40 2     2   4 my $self = shift;
41              
42 2         156 my $check = {
43             app_name => {
44             type => SCALAR,
45             default => __PACKAGE__,
46             },
47             title => {
48             type => SCALAR,
49             default => File::Basename::basename( $0 ),
50             },
51             priority => {
52             type => SCALAR,
53             default => 0,
54             regex => qr{^\-*[0-2]$}o,
55             },
56             sticky => {
57             type => BOOLEAN,
58             default => 1,
59             },
60             icon_file => {
61             type => SCALAR,
62             default => undef,
63             },
64             };
65              
66 2         63 my %p = Params::Validate::validate( @_, $check );
67              
68 2         18 $self->{app_name} = $p{app_name};
69 2         5 $self->{title} = $p{title};
70 2   50     19 $self->{priority} = $p{priority} || 0;
71 2 50 33     25 $self->{sticky} = defined $p{sticky} && $p{sticky} ? 1 : 0;
72 2         9 $self->{icon_file} = $p{icon_file};
73              
74 2         813 $self->_set_global;
75              
76 0           return $self;
77             }
78              
79 0     0     sub _notification_name { "New Message" }
80              
81             1;
82              
83             __END__