File Coverage

lib/XML/DOM/Lite/Document.pm
Criterion Covered Total %
statement 54 63 85.7
branch 4 6 66.6
condition 3 3 100.0
subroutine 19 22 86.3
pod 0 14 0.0
total 80 108 74.0


line stmt bran cond sub pod time code
1             package XML::DOM::Lite::Document;
2 8     8   40 use warnings;
  8         14  
  8         193  
3 8     8   33 use strict;
  8         14  
  8         109  
4              
5 8     8   31 use strict;
  8         13  
  8         129  
6 8     8   35 use warnings;
  8         17  
  8         207  
7              
8 8     8   41 use Carp qw (carp croak cluck);
  8         14  
  8         526  
9              
10 8     8   271 use XML::DOM::Lite::Constants qw(:all);
  8         14  
  8         1063  
11 8     8   3157 use XML::DOM::Lite::XPath;
  8         25  
  8         303  
12              
13 8     8   53 use base qw(XML::DOM::Lite::Node);
  8         12  
  8         2616  
14              
15             sub new {
16 12     12 0 34 my ($class) = @_;
17 12         139 return bless $class->SUPER::new({
18             nodeName => '#document',
19             nodeType => DOCUMENT_NODE,
20             childNodes => [ ],
21             elements => { },
22             }), $class;
23             }
24              
25 3     3 0 12 sub parentNode { undef }
26              
27             sub appendChild {
28 17     17 0 31 my ($self, $node) = @_;
29 17 100 100     104 if (not $self->{documentElement} and ($node->nodeType == ELEMENT_NODE)) {
30 12         27 $self->{documentElement} = $node;
31             }
32 17         71 return $self->SUPER::appendChild($node);
33             }
34              
35             sub setElementById {
36 7     7 0 15 my ($self, $id, $node) = @_;
37 7         16 $self->{elements}->{$id} = $node;
38             }
39              
40             sub getElementById {
41 2     2 0 1267 my ($self, $id) = @_;
42 2 50       14 return $self->{elements}->{$id} if exists $self->{elements}->{$id};
43             }
44              
45             sub createElement {
46 4     4 0 12 my ($self, $tagName) = @_;
47 4         18 my $node = XML::DOM::Lite::Node->new({
48             nodeName => $tagName,
49             tagName => $tagName,
50             nodeType => ELEMENT_NODE,
51             });
52 4         9 $node->ownerDocument($self);
53 4         6 return $node;
54             }
55              
56             sub createAttribute {
57 0     0 0 0 my ($self, $nodeName) = @_;
58 0         0 my $attr = XML::DOM::Lite::Node->new({
59             nodeName => $nodeName,
60             nodeType => ATTRIBUTE_NODE,
61             });
62 0         0 $attr->ownerDocument($self);
63 0         0 return $attr;
64             }
65              
66             sub createTextNode {
67 1     1 0 2 my ($self, $str) = @_;
68 1         6 my $node = XML::DOM::Lite::Node->new({
69             nodeName => '#text',
70             nodeType => TEXT_NODE,
71             nodeValue => $str,
72             });
73 1         3 $node->ownerDocument($self);
74 1         3 return $node;
75             }
76              
77             sub createDocumentFragment {
78 2     2 0 859 my $self = shift;
79 2         16 my $frag = XML::DOM::Lite::Node->new({
80             nodeName => '#document-fragment',
81             nodeType => DOCUMENT_FRAGMENT_NODE,
82             ownerDocument => $self,
83             });
84 2         9 $frag->ownerDocument($self);
85 2         5 return $frag;
86             }
87              
88             sub documentElement {
89 20     20 0 2222 my $self = shift;
90 20 50       54 if (@_) {
91 0         0 $self->{documentElement} = shift;
92             }
93 20         67 $self->{documentElement};
94             }
95              
96             sub selectNodes {
97 1     1 0 4 my ($self, $path) = @_;
98 1         10 return XML::DOM::Lite::XPath->evaluate($path, $self);
99             }
100              
101             sub selectSingleNode {
102 1     1 0 4 my ($self, $path) = @_;
103 1         4 return $self->selectNodes($path)->[0];
104             }
105              
106             sub elements {
107 0     0 0   return $_[0]->{elements};
108             }
109              
110             sub xml {
111 0     0 0   my $self = shift;
112 0           my $serializer = XML::DOM::Lite::Serializer->new;
113 0           return $serializer->serializeToString($self->documentElement);
114             }
115              
116             1;
117             __END__