File Coverage

blib/lib/XML/ASX/Event.pm
Criterion Covered Total %
statement 26 35 74.2
branch 4 8 50.0
condition 0 6 0.0
subroutine 7 8 87.5
pod 0 3 0.0
total 37 60 61.6


line stmt bran cond sub pod time code
1             package XML::ASX::Event;
2              
3 1     1   7 use strict;
  1         1  
  1         41  
4 1     1   6 use vars qw($VERSION $AUTOLOAD @ISA);
  1         1  
  1         71  
5              
6             @ISA = qw(XML::ASX);
7              
8 1     1   5 use XML::ASX::Entry;
  1         3  
  1         48  
9              
10 1     1   6 use overload '""' => \&xml;
  1         2  
  1         8  
11              
12             $VERSION = '0.01';
13              
14             my %RW_SLOTS = (
15             name => '',
16             whendone => '',
17             );
18              
19             sub AUTOLOAD {
20 3     3   6 my $self = shift;
21 3         5 my $param = $AUTOLOAD;
22 3         11 $param =~ s/.*:://;
23 3 50       22 die(__PACKAGE__." doesn't implement $param") unless defined($RW_SLOTS{$param});
24 3 100       67 $self->{$param} = shift if @_;
25 3         160 return $self->{$param};
26             }
27              
28             sub new {
29 1     1 0 2 my $class = shift;
30 1         10 my %param = @_;
31 1         5 my $self = bless {}, $class;
32              
33 1         14 $self->$_($RW_SLOTS{$_}) foreach keys %RW_SLOTS;
34 1         4 $self->$_($param{$_}) foreach keys %param;
35              
36 1         4 return $self;
37             }
38              
39             sub add_entry {
40 0     0 0 0 my $self = shift;
41 0         0 my $entry = XML::ASX::Entry->new;
42 0         0 push @{$self->{queue}}, $entry;
  0         0  
43              
44 0         0 return $self->{queue}->[scalar @{$self->{queue}} - 1];
  0         0  
45             }
46              
47             sub xml {
48 1     1 0 3 my $self = shift;
49              
50 1 50       4 die __PACKAGE__.': name() required' unless $self->name;
51 0 0 0       die __PACKAGE__.': whendone() required. Valid values are "RESUME","NEXT","BREAK"' unless $self->whendone eq 'RESUME' or $self->whendone eq 'NEXT' or $self->whendone eq 'BREAK';
      0        
52              
53 0           my $content = join '', ($self->each_in_queue);
54              
55 0           return $self->entag('Event',$content,{NAME=>$self->name,WHENDONE=>$self->whendone});
56             }
57              
58             1;
59             __END__