home *** CD-ROM | disk | FTP | other *** search
- # $Id: Comment.pm,v 1.5 2000/09/05 13:05:46 matt Exp $
-
- package XML::XPath::Node::Comment;
-
- use strict;
- use vars qw/@ISA/;
-
- @ISA = ('XML::XPath::Node');
-
- package XML::XPath::Node::CommentImpl;
-
- use vars qw/@ISA/;
- @ISA = ('XML::XPath::NodeImpl', 'XML::XPath::Node::Comment');
- use XML::XPath::Node ':node_keys';
-
- sub new {
- my $class = shift;
- my ($comment) = @_;
-
- my $pos = XML::XPath::Node->nextPos;
-
- my @vals;
- @vals[node_global_pos, node_comment] =
- ($pos, $comment);
- my $self = \@vals;
-
- bless $self, $class;
- }
-
- sub getNodeType { COMMENT_NODE }
-
- sub isCommentNode { 1; }
-
- sub getNodeValue {
- return shift->[node_comment];
- }
-
- sub getData {
- shift->getNodeValue;
- }
-
- sub setNodeValue {
- shift->[node_comment] = shift;
- }
-
- sub _to_sax {
- my $self = shift;
- my ($doch, $dtdh, $enth) = @_;
-
- $doch->comment( { Data => $self->getValue } );
- }
-
- sub comment_escape {
- my $data = shift;
- $data =~ s/--/--/g;
- return $data;
- }
-
- sub string_value {
- my $self = shift;
- return $self->[node_comment];
- }
-
- sub toString {
- my $self = shift;
- return '<!--' . comment_escape($self->[node_comment]) . '-->';
- }
-
- 1;
- __END__
-
- =head1 NAME
-
- Comment - an XML comment: <!--comment-->
-
- =head1 API
-
- =head2 new ( data )
-
- Create a new comment node.
-
- =head2 getValue / getData
-
- Returns the value in the comment
-
- =head2 toString
-
- Returns the comment with -- encoded as a numeric entity (if it
- exists in the comment text).
-
- =cut
-