Mercurial > pub > Impl
comparison Lib/IMPL/DOM/Navigator/Builder.pm @ 11:75980091813b
DOM и навигация
| author | Sergey |
|---|---|
| date | Wed, 02 Sep 2009 17:47:44 +0400 |
| parents | |
| children | bb8d67f811ea |
comparison
equal
deleted
inserted
replaced
| 10:63f6653b094e | 11:75980091813b |
|---|---|
| 1 package IMPL::DOM::Navigator::Builder; | |
| 2 use strict; | |
| 3 use warnings; | |
| 4 | |
| 5 use base qw(IMPL::DOM::Navigator); | |
| 6 use IMPL::Class::Property; | |
| 7 use IMPL::Class::Property::Direct; | |
| 8 | |
| 9 BEGIN { | |
| 10 protected _direct property _navigatorSchema => prop_all; | |
| 11 public _direct property Document => prop_get | owner_set; | |
| 12 } | |
| 13 | |
| 14 __PACKAGE__->PassThroughArgs; | |
| 15 | |
| 16 sub CTOR { | |
| 17 my ($this,$domDocument,$schema) = @_; | |
| 18 | |
| 19 $this->{$Document} = $domDocument; | |
| 20 $this->{$_navigatorSchema} = new IMPL::DOM::Navigator($schema); | |
| 21 } | |
| 22 | |
| 23 sub NavigateCreate { | |
| 24 my ($this,$nodeName,%props) = @_; | |
| 25 | |
| 26 if ( my $nodeSchema = $this->{$_navigatorSchema}->Navigate($nodeName) ) { | |
| 27 | |
| 28 | |
| 29 } else { | |
| 30 die new IMPL::InvalidOperationException("Requested elemnt not found in the schema"); | |
| 31 } | |
| 32 } | |
| 33 | |
| 34 1; |
