File Coverage

blib/lib/XML/DOM2/Attribute.pm
Criterion Covered Total %
statement 36 42 85.7
branch 4 12 33.3
condition n/a
subroutine 14 17 82.3
pod 9 9 100.0
total 63 80 78.7


line stmt bran cond sub pod time code
1             package XML::DOM2::Attribute;
2              
3             =head1 NAME
4              
5             XML::DOM2::Attribute
6              
7             =head1 DESCRIPTION
8              
9             Attribute object class for XML documents
10              
11             =head1 METHODS
12              
13             =cut
14              
15 3     3   19 use base "XML::DOM2::DOM::Attribute";
  3         5  
  3         1676  
16              
17 3     3   19 use strict;
  3         6  
  3         75  
18 3     3   16 use warnings;
  3         4  
  3         63  
19 3     3   16 use Carp;
  3         4  
  3         394  
20              
21             use overload
22 7     7   45 '""' => sub { shift->auto_string( @_ ) },
23 1     1   6 'eq' => sub { shift->auto_eq( @_ ) },
24 3     3   5498 'ne' => sub { not shift->auto_eq( @_ ) };
  3     0   3445  
  3         51  
  0         0  
25              
26             =head2 $class->new( %options )
27              
28             Create a new Attribute object.
29              
30             =cut
31             sub new
32             {
33 8     8 1 34 my ($proto, %opts) = @_;
34 8 50       25 croak "Attribute must have a name!" if not $opts{'name'};
35 8 50       28 croak "Attribute must have an owner" if not $opts{'owner'};
36 8         17 my $value = delete($opts{'value'});
37 8         28 my $self = bless \%opts, $proto;
38 8 50       23 $self->deserialise( $value ) if defined($value);
39 8         38 return $self;
40             }
41              
42             =head2 $attribute->value()
43              
44             Returns the serialised value within this attribute.
45              
46             =cut
47             sub value
48             {
49 12     12 1 645 my ($self) = @_;
50 12         25 return $self->serialise;
51             }
52              
53             =head2 $attribute->serialise()
54              
55             Returns the serialised value for this attribute.
56              
57             =cut
58             sub serialise
59             {
60 12     12 1 24 my ($self) = @_;
61 12         50 return $self->{'value'};
62             }
63              
64             =head2 $attribute->deserialise( $value )
65              
66             Sets the attribute value to $value, does any deserialisation too.
67              
68             =cut
69             sub deserialise
70             {
71 6     6 1 16 my ($self, $value) = @_;
72 6         272 $self->{'value'} = $value;
73             }
74              
75             =head2 $attribute->serialise_full()
76              
77             Returns the serialised name and value for this attribute.
78              
79             =cut
80             sub serialise_full
81             {
82 3     3 1 5 my ($self) = @_;
83 3         8 my $value = $self->value;
84 3 50       9 $value = '~undef~' if not defined($value);
85 3         16 return $self->name.'="'.$value.'"';
86             }
87              
88             =head2 $attribute->document()
89              
90             Return the document associated with this attribute.
91              
92             =cut
93             sub document
94             {
95 0     0 1 0 my ($self) = @_;
96 0 0       0 warn "No owner element\n" if not $self->ownerElement;
97 0 0       0 return undef if not $self->ownerElement;
98 0         0 return $self->ownerElement->document;
99             }
100              
101             =head2 $attribute->delete()
102              
103             Delete this attribute, NOT IMPLIMENTED.
104              
105             =cut
106 0     0 1 0 sub delete {}
107              
108             =head1 OVERLOADED
109              
110             =head2 $object->auto_string()
111              
112             =cut
113 7     7 1 17 sub auto_string { return shift->value() }
114              
115             =head2 $object->auto_eq( $string )
116              
117             =cut
118 1     1 1 5 sub auto_eq { return shift->value() eq shift }
119              
120             =head1 COPYRIGHT
121              
122             Martin Owens, doctormo@cpan.org
123              
124             =head1 SEE ALSO
125              
126             L,L
127              
128             =cut
129             1;