File Coverage

blib/lib/Scripting/Event.pm
Criterion Covered Total %
statement 6 26 23.0
branch 0 6 0.0
condition 0 3 0.0
subroutine 2 7 28.5
pod 0 5 0.0
total 8 47 17.0


line stmt bran cond sub pod time code
1             # File: $Source: /Users/clajac/cvsroot//Scripting/Scripting/Event.pm,v $
2             # Author: $Author: clajac $
3             # Date: $Date: 2003/07/21 10:10:05 $
4             # Revision: $Revision: 1.5 $
5              
6             package Scripting::Event;
7 1     1   5 use strict;
  1         3  
  1         44  
8              
9 1     1   6 use constant GLOBAL_NAMESPACE => "_Global";
  1         3  
  1         514  
10              
11             require Exporter;
12              
13             our @ISA = qw(Exporter);
14              
15             our @EXPORT = qw();
16             our @EXPORT_OK = qw(GLOBAL_NAMESPACE);
17             our %EXPORT_TAGS = (
18             constants => [qw(GLOBAL_NAMESPACE)],
19             );
20              
21             my %Events;
22              
23             sub new {
24 0     0 0   my $pkg = shift;
25 0   0       $pkg = ref $pkg || $pkg;
26 0           my %args = (
27             namespace => GLOBAL_NAMESPACE,
28             @_,
29             );
30            
31 0           my $self = bless {
32             }, $pkg;
33              
34 0           return $self;
35             }
36              
37             sub has_event {
38 0     0 0   my ($pkg, $ns, $event) = @_;
39              
40 0           return exists $Events{"$ns/$event"};
41             }
42              
43             sub remove_event {
44 0     0 0   my ($pkg, $ns, $event) = @_;
45              
46 0           delete $Events{"$ns/$event"};
47             }
48              
49             sub add_event {
50 0     0 0   my ($pkg, $ns, $event, $cb) = @_;
51              
52 0           $Events{"$ns/$event"} = $cb;
53             }
54              
55             sub invoke {
56 0     0 0   my $self = shift;
57              
58 0           my ($ns, $event);
59 0 0         if(@_ == 1) {
    0          
60 0           $ns = GLOBAL_NAMESPACE;
61 0           $event = shift;
62             } elsif(@_ == 2) {
63 0           ($ns, $event) = @_;
64             } else {
65 0           die "Bad number of arguments\n";
66             }
67              
68 0 0         return unless $self->has_event($ns, $event);
69 0           $Events{"$ns/$event"}->()
70             }
71              
72             1;