File Coverage

blib/lib/HTTP/OAI/Metadata.pm
Criterion Covered Total %
statement 23 25 92.0
branch 2 4 50.0
condition n/a
subroutine 7 8 87.5
pod 4 7 57.1
total 36 44 81.8


line stmt bran cond sub pod time code
1             package HTTP::OAI::Metadata;
2              
3             @ISA = qw( HTTP::OAI::MemberMixin HTTP::OAI::SAX::Base );
4              
5 11     11   79 use strict;
  11         23  
  11         4429  
6              
7             our $VERSION = '4.11';
8              
9             sub new
10             {
11 15     15 0 336 my( $class, %self ) = @_;
12              
13 15         46 my $inst = bless \%self, $class;
14              
15 15 50       128 if ($self{dom}) {
16 0         0 $inst->_elem("dom", $self{dom});
17             }
18             else {
19 15         287 $inst->{doc} = XML::LibXML::Document->new( '1.0', 'UTF-8' );
20 15         211 $inst->{dom} = $inst->{current} = $inst->{doc}->createDocumentFragment;
21             }
22              
23 15         96 return $inst;
24             }
25              
26 0     0 0 0 sub metadata { shift->dom( @_ ) }
27 4     4 1 31 sub dom { shift->_elem( "dom", @_ ) }
28              
29             sub generate
30             {
31 3     3 0 15 my( $self, $driver ) = @_;
32              
33 3         14 $driver->generate( $self->dom );
34             }
35              
36             sub start_element
37             {
38 175     175 1 1429 my( $self, $hash ) = @_;
39              
40             my $node = $self->{doc}->createElementNS(
41             $hash->{NamespaceURI},
42             $hash->{Name},
43 175         1321 );
44 175         302 foreach my $attr (values %{$hash->{Attributes}})
  175         586  
45             {
46 119 50       2174 Carp::confess "Can't setAttribute without attribute name" if !defined $attr->{Name};
47 119         293 $node->setAttribute( $attr->{Name}, $attr->{Value} );
48             }
49              
50 175         1997 $self->{current} = $self->{current}->appendChild( $node );
51             }
52              
53             sub end_element
54             {
55 175     175 1 1341 my( $self, $hash ) = @_;
56              
57 175         778 $self->{current} = $self->{current}->parentNode;
58             }
59              
60             sub characters
61             {
62 175     175 1 3690 my( $self, $hash ) = @_;
63              
64 175         971 $self->{current}->appendText( $hash->{Data} );
65             }
66              
67             1;
68              
69             __END__