annotate Lib/IMPL/DOM/Schema/ComplexNode.pm @ 8:fffb153be599

DOM Schema
author Sergey
date Tue, 25 Aug 2009 17:36:37 +0400
parents 94d47b388442
children 5899df8c289e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
1 package IMPL::DOM::Schema::ComplexNode;
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
2 use strict;
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
3 use warnings;
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
4
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
5 use base qw(IMPL::DOM::Schema::Item);
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
6 use IMPL::Class::Property;
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
7
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
8 BEGIN {
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
9 public property nodeType => prop_all;
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
10 public property content => {
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
11 get => \&_getContent,
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
12 set => \&_setContent
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
13 }
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
14 }
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
15
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
16 __PACKAGE__->PassThroughArgs;
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
17
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
18 sub _getContent {
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
19 $_[0]->firstChild;
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
20 }
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
21
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
22 sub _setContent {
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
23 $_[0]->firstChild($_[1]);
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
24 }
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
25
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
26 sub Validate {
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
27 my ($this,$node) = @_;
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
28
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
29 if (my $type = $this->nodeType) {
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
30 my $schemaType = $this->Schema->ResolveType($type);
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
31 return $schemaType->Validate($node);
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
32 } else {
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
33 my @errors;
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
34 push @errors, $_->Validate foreach @{$this->childNodes};
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
35
8
fffb153be599 DOM Schema
Sergey
parents: 7
diff changeset
36 return @errors;
7
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
37 }
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
38 }
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
39
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
40 1;
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
41
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
42 __END__
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
43
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
44 =pod
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
45
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
46 =head1 DESCRIPTION
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
47
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
48 . ,
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
49 .
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
50
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
51 ..
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
52 , . C<content>
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
53
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
54 =head2 PROPERTIES
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
55
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
56 =over
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
57
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
58 =item C<nodeType>
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
59
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
60 , .
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
61 C<content> .
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
62
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
63 =item C<content>
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
64
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
65 , C<IMPL::DOM::Schema::NodeSet>
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
66 C<IMPL::DOM::Schema::NodeList>, .
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
67 .
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
68
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
69 =back
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
70
94d47b388442 Улучшены тесты
Sergey
parents:
diff changeset
71 =cut