CQL::PrefixNode - represents a prefix node in a CQL parse tree


CQL-Parser documentation Contained in the CQL-Parser distribution.

Index


Code Index:

NAME

Top

CQL::PrefixNode - represents a prefix node in a CQL parse tree

SYNOPSIS

Top

    use CQL::PrefixNode;
    my $prefix = CQL::PrefixNode->new(
        name        => '',
        identifier  => '',
        subtree     => $node
    );

DESCRIPTION

Top

METHODS

Top

new()

Creates a new CQL::PrefixNode inducing a mapping from the specified qualifier-set name to the specified identifier across the specified subtree.

getPrefix()

getSubtree()

toCQL()

toXCQL()


CQL-Parser documentation Contained in the CQL-Parser distribution.
package CQL::PrefixNode;

use strict;
use warnings;
use base qw( CQL::Node );
use CQL::Prefix;
use Carp qw( croak );

sub new {
    my ($class,%opts) = @_;
    croak( 'must supply name' ) if ! exists $opts{name};
    croak( 'must supply identifier' ) if ! exists $opts{identifier};
    croak( 'must supply subtree' ) if ! exists $opts{subtree};
    my $prefix = CQL::Prefix->new(
        name        => $opts{name},
        identifier  => $opts{identifier}
    );
    my $self = { 
        prefix      => $prefix, 
        subtree     => $opts{subtree} 
    };
    return bless $self, ref($class) || $class;
}

sub getPrefix {
    return shift->{prefix};
}

sub getSubtree {
    return shift->{subtree};
}

sub toCQL {
    my $self = shift;
    my $prefix = $self->getPrefix();
    my $subtree = $self->getSubtree();
    return ">" . $prefix->getName() . '="' . $prefix->getIdentifier() . '" ' .
        '(' . $subtree->toCQL() . ')';
}

sub toXCQL {
    my ($self,$level,@prefixes) = @_;
    $level = 0 if ! $level;
    push( @prefixes, $self->getPrefix() );
    my $xml = $self->getSubtree()->toXCQL( $level, @prefixes );
    return $self->addNamespace( $level, $xml );
}

1;