POE::XUL::CDATA - XUL CDATA


POE-XUL documentation Contained in the POE-XUL distribution.

Index


Code Index:

NAME

Top

POE::XUL::CDATA - XUL CDATA

SYNOPSIS

Top

    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

DESCRIPTION

Top

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.

METHODS

Top

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.

nodeValue

    $cdata->nodeValue( $raw_data );
    $data = $cdata->nodeValue;

appendData

    $cdata->appendData( $more_js );

deleteData

    $cdata->deleteData( $offset, $count );

insertData

    $cdata->insertData( $offset, $more_data );

replaceData

    $cdata->insertData( $offset, $count, $more_data );

substringData

    my $data = $cdata->substringData( $offset, $count );

as_xml

    my $xml = $cdata->as_xml;

children

Returns an empty array.

dispose

Does nothing.

AUTHOR

Top

Philip Gwyn <gwyn-at-cpan.org>

CREDITS

Top

Based on XUL::Node by Ran Eilam.

COPYRIGHT AND LICENSE

Top

SEE ALSO

Top

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__