| POE-XUL documentation | Contained in the POE-XUL distribution. |
POE::XUL::CDATA - XUL CDATA
use POE::XUL::Node;
use POE::XUL::CDATA;
my $cdata = POE::XUL::CDATA->new( $raw_data );
$node->appendChild( $cdata );
Script( <<JS );
function something() {
// JS code here
}
JS
POE::XUL::CDATA instances is are DOM-like object for holding and
manipulating character data. CDATA differs from a TextNode in that & and
< are ignored. This is especially useful for Javascript; CDATA in a
Script node will be eval()ed by the client javascript library.
While POE::XUL::CDATA offers the full DOM interface, the ChangeManager will
transmit data at each update. This means that if you modify the data more
then once during an event, the data will be sent multiple times in the
response and eval()ed multiple times if it the child of a Script node.
This may or may not be what you want.
$cdata->nodeValue( $raw_data );
$data = $cdata->nodeValue;
$cdata->appendData( $more_js );
$cdata->deleteData( $offset, $count );
$cdata->insertData( $offset, $more_data );
$cdata->insertData( $offset, $count, $more_data );
my $data = $cdata->substringData( $offset, $count );
my $xml = $cdata->as_xml;
Returns an empty array.
Does nothing.
Philip Gwyn <gwyn-at-cpan.org>
Based on XUL::Node by Ran Eilam.
Copyright 2007-2010 by Philip Gwyn. All rights reserved;
Copyright 2003-2004 Ran Eilam. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
perl(1), POE::XUL, POE::XUL::Node, , POE::XUL::TextNode.
| POE-XUL documentation | Contained in the POE-XUL distribution. |
package POE::XUL::CDATA; # $Id: CDATA.pm 1566 2010-11-03 03:13:32Z fil $ # Copyright Philip Gwyn 2007-2010. All rights reserved. use strict; use warnings; use Carp; our $VERSION = '0.0600'; ################################################################ sub new { my( $package, $data ) = @_; my $self = bless { data=>'' }, $package; $self->nodeValue( $data ); return $self; } ################################################################ sub is_window { 0 } ################################################################ sub update_CM { my( $self ) = @_; return unless $POE::XUL::Node::CM; $POE::XUL::Node::CM->after_cdata_change( $self ); } ################################################################ sub nodeValue { my( $self, $value ) = @_; if( 2==@_ ) { $_[0]->{data} = $value; $self->update_CM; } return $_[0]->{data}; } ################################################################ sub substringData { my( $self, $offset, $count ) = @_; return substr( $self->{data}, $offset, $count ); } ################################################################ sub appendData { my( $self, $data ) = @_; $self->{data} .= $data; $self->update_CM; } ################################################################ sub insertData { my( $self, $offset, $data ) = @_; substr( $self->{data}, $offset, 0, $data ); $self->update_CM; } ################################################################ sub deleteData { my( $self, $offset, $count ) = @_; substr( $self->{data}, $offset, $count, ''); $self->update_CM; } ################################################################ sub replaceData { my( $self, $offset, $count, $data ) = @_; substr( $self->{data}, $offset, $count, $data ); $self->update_CM; } ################################################################ sub as_xml { return qq(<![CDATA[$_[0]->{data}]]>); } ################################################################ sub children { return; } ################################################################ sub dispose { return; } ################################################################ sub DESTROY { my( $self ) = @_; $POE::XUL::Node::CM->after_destroy( $self ) if $POE::XUL::Node::CM; } 1; __DATA__