view lib/IMPL/DOM/Navigator/SimpleBuilder.pm @ 411:ee36115f6a34 ref20150831

sync
author cin
date Mon, 21 Sep 2015 00:53:10 +0300
parents c6e90e02dd17
children
line wrap: on
line source

package IMPL::DOM::Navigator::SimpleBuilder;
use strict;
use warnings;

use parent qw(IMPL::DOM::Navigator);

use IMPL::Class::Property;

require IMPL::DOM::Navigator::SchemaNavigator;
use IMPL::DOM::Document;

BEGIN {
    public _direct property Document => prop_get | owner_set;
}

our %CTOR = (
    'IMPL::DOM::Navigator' => sub { IMPL::DOM::Document::Empty; }
);

sub NavigateCreate {
    my ($this,$nodeName,%props) = @_;
    
    my $node;
    if (! $this->{$Document}) {
        $node = $this->{$Document} = IMPL::DOM::Document->new(nodeName => $nodeName,%props);
        $this->_initNavigator($node);
    } else {
        die new IMPL::InvalidOperationException('Can     create a second top level element') unless $this->Current;
        $node = $this->{$Document}->Create($nodeName,'IMPL::DOM::Node',\%props);
        $this->Current->appendChild($node);
        $this->internalNavigateNodeSet($node);
    }
    return $node;
}

sub inflateValue {
    $_[1];
}

1;