diff Lib/IMPL/DOM/Navigator/Builder.pm @ 49:16ada169ca75

migrating to the Eclipse IDE
author wizard@linux-odin.local
date Fri, 26 Feb 2010 10:49:21 +0300
parents f25d021780b3
children 259cd3df6e53
line wrap: on
line diff
--- a/Lib/IMPL/DOM/Navigator/Builder.pm	Fri Feb 26 01:43:42 2010 +0300
+++ b/Lib/IMPL/DOM/Navigator/Builder.pm	Fri Feb 26 10:49:21 2010 +0300
@@ -1,97 +1,97 @@
-package IMPL::DOM::Navigator::Builder;
-use strict;
-use warnings;
-
-use base qw(IMPL::Object);
-use IMPL::Class::Property;
-use IMPL::Class::Property::Direct;
-require IMPL::DOM::Navigator::SchemaNavigator;
-
-BEGIN {
-    private _direct property _schemaNavi => prop_all;
-    private _direct property _nodesPath => prop_all;
-    private _direct property _nodeCurrent => prop_all;
-    private _direct property _docClass => prop_all
-    public _direct property Document => prop_get | owner_set;
-}
-
-sub CTOR {
-    my ($this,$docClass,$schema) = @_;
-    
-    $this->{$_docClass} = $docClass;
-    $this->{$_schemaNavi} = $schema ? IMPL::DOM::Navigator::SchemaNavigator->new($schema) : undef;
-}
-
-sub NavigateCreate {
-    my ($this,$nodeName,%props) = @_;
-    
-    if (my $schemaNode = $this->{$_schemaNavi}->NavigateName($nodeName)) {
-        my $class = $schemaNode->can('nativeType') ? $schemaNode->nativeType : 'IMPL::DOM::Node';
-        
-        my $node;
-        if (! $this->{$Document}) {
-            $node = $this->{$Document} = $this->{$_docClass}->new(nodeName => $nodeName,%props);
-        } else {
-            die new IMPL::InvalidOperationException('Can\t create a second top level element') unless $this->{$_nodeCurrent};
-            $node = $this->{$Document}->Create($nodeName,$class,\%props);
-            push @{$this->{$_nodesPath}}, $this->{$_nodeCurrent};
-            $this->{$_nodeCurrent}->appendChild($node);
-        }
-        
-        $this->{$_nodeCurrent} = $node;
-        
-        return $node;
-    } else {
-        die new IMPL::InvalidOperationException("The specified node is undefined", $nodeName);
-    }
-}
-
-sub Back {
-    my ($this) = @_;
-    
-    $this->{$_schemaNavi}->SchemaBack();
-    $this->{$_nodeCurrent} = pop @{$this->{$_nodesPath}};
-}
-
-1;
-
-__END__
-=pod
-
-=head1 SYNOPSIS
-
-my $builder = new IMPL::DOM::Navigator::Builder(new MyApp::Document,$schema);
-my $reader = new IMPL::DOM::XMLReader(Navigator => $builder);
-
-$reader->ParseFile("document.xml");
-
-my @errors = $schema->Validate($builder->Document);
-
-=head1 DESCRIPTION
-
-Построитель DOM документов по указанной схеме. Обычно используется в связке
-с объектами для чтения такими как C<IMPL::DOM::XMLReader>.
-
-=head1 METHODS
-
-=over
-
-=item C<CTOR($domDocument,$schema)>
-
-Создает новый объект, принимает на вход пустой (но не обязательно) документ и
-схему.
-
-=item C<< $obj->NavigateCreate($nodeName) >>
-
-Создает новый узел с указанным именем и переходит в него. В случае если в схеме
-подходящий узел не найден, то вызывается исключение.
-
-При этом по имени узла ищется его схема, после чего определяется класс для
-создания экземпляра и созданный узел доавляется в документ.
-
-Также имя создаваемого узла НЕ может быть переопределено свойством nodeName, оно
-будет проигнорировано.
-
-=back
-
-=cut
\ No newline at end of file
+package IMPL::DOM::Navigator::Builder;
+use strict;
+use warnings;
+
+use base qw(IMPL::Object);
+use IMPL::Class::Property;
+use IMPL::Class::Property::Direct;
+require IMPL::DOM::Navigator::SchemaNavigator;
+
+BEGIN {
+    private _direct property _schemaNavi => prop_all;
+    private _direct property _nodesPath => prop_all;
+    private _direct property _nodeCurrent => prop_all;
+    private _direct property _docClass => prop_all
+    public _direct property Document => prop_get | owner_set;
+}
+
+sub CTOR {
+    my ($this,$docClass,$schema) = @_;
+    
+    $this->{$_docClass} = $docClass;
+    $this->{$_schemaNavi} = $schema ? IMPL::DOM::Navigator::SchemaNavigator->new($schema) : undef;
+}
+
+sub NavigateCreate {
+    my ($this,$nodeName,%props) = @_;
+    
+    if (my $schemaNode = $this->{$_schemaNavi}->NavigateName($nodeName)) {
+        my $class = $schemaNode->can('nativeType') ? $schemaNode->nativeType : 'IMPL::DOM::Node';
+        
+        my $node;
+        if (! $this->{$Document}) {
+            $node = $this->{$Document} = $this->{$_docClass}->new(nodeName => $nodeName,%props);
+        } else {
+            die new IMPL::InvalidOperationException('Can\t create a second top level element') unless $this->{$_nodeCurrent};
+            $node = $this->{$Document}->Create($nodeName,$class,\%props);
+            push @{$this->{$_nodesPath}}, $this->{$_nodeCurrent};
+            $this->{$_nodeCurrent}->appendChild($node);
+        }
+        
+        $this->{$_nodeCurrent} = $node;
+        
+        return $node;
+    } else {
+        die new IMPL::InvalidOperationException("The specified node is undefined", $nodeName);
+    }
+}
+
+sub Back {
+    my ($this) = @_;
+    
+    $this->{$_schemaNavi}->SchemaBack();
+    $this->{$_nodeCurrent} = pop @{$this->{$_nodesPath}};
+}
+
+1;
+
+__END__
+=pod
+
+=head1 SYNOPSIS
+
+my $builder = new IMPL::DOM::Navigator::Builder(new MyApp::Document,$schema);
+my $reader = new IMPL::DOM::XMLReader(Navigator => $builder);
+
+$reader->ParseFile("document.xml");
+
+my @errors = $schema->Validate($builder->Document);
+
+=head1 DESCRIPTION
+
+Построитель DOM документов по указанной схеме. Обычно используется в связке
+с объектами для чтения такими как C<IMPL::DOM::XMLReader>.
+
+=head1 METHODS
+
+=over
+
+=item C<CTOR($domDocument,$schema)>
+
+Создает новый объект, принимает на вход пустой (но не обязательно) документ и
+схему.
+
+=item C<< $obj->NavigateCreate($nodeName) >>
+
+Создает новый узел с указанным именем и переходит в него. В случае если в схеме
+подходящий узел не найден, то вызывается исключение.
+
+При этом по имени узла ищется его схема, после чего определяется класс для
+создания экземпляра и созданный узел доавляется в документ.
+
+Также имя создаваемого узла НЕ может быть переопределено свойством nodeName, оно
+будет проигнорировано.
+
+=back
+
+=cut