Mercurial > pub > Impl
annotate Lib/IMPL/DOM/Schema/SimpleNode.pm @ 152:1e7f03414b65
DOM: schema improvements
DOM: saving to XML::Writer feature
author | wizard |
---|---|
date | Thu, 23 Sep 2010 03:58:43 +0400 |
parents | e30bdd040fe3 |
children | 76515373dac0 |
rev | line source |
---|---|
49 | 1 package IMPL::DOM::Schema::SimpleNode; |
2 use strict; | |
3 use warnings; | |
4 | |
5 use base qw(IMPL::DOM::Schema::Node); | |
103 | 6 use IMPL::Class::Property; |
7 use IMPL::Class::Property::Direct; | |
152 | 8 use IMPL::DOM::Property qw(_dom); |
103 | 9 |
10 BEGIN { | |
152 | 11 public _dom _direct property inflator => prop_get; |
12 public _dom _direct property messageInflateError => prop_get; | |
103 | 13 } |
49 | 14 |
15 our %CTOR = ( | |
124 | 16 'IMPL::DOM::Schema::Node' => sub { |
17 my %args = @_; | |
18 $args{nodeName} ||= 'SimpleNode'; | |
19 delete @args{qw(inflator messageInflateError)}; | |
20 %args | |
21 } | |
103 | 22 ); |
23 | |
24 sub CTOR { | |
25 my ($this,%args) = @_; | |
26 | |
152 | 27 if ( $args{inflator} ) { |
28 $this->{$inflator} = $args{inflator} ; | |
29 $this->{$messageInflateError} = exists $args{messageInflateError} ? $args{messageInflateError} : 'Failed to inflate nodeValue %Node.path%: %Error%'; | |
30 } | |
103 | 31 } |
49 | 32 |
33 sub Validate { | |
104
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
34 my ($this,$node,$ctx) = @_; |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
35 |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
36 my @result; |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
37 |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
38 push @result, $_->Validate($node,$ctx) foreach $this->childNodes; |
49 | 39 |
104
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
40 return @result; |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
41 } |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
42 |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
43 sub inflateValue { |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
44 my ($this,$value) = @_; |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
45 |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
46 if ( my $inflator = $this->inflator ) { |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
47 return $inflator->new($value); |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
48 } else { |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
49 return $value; |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
50 } |
49 | 51 } |
52 | |
53 1; | |
54 | |
55 __END__ | |
56 | |
57 =pod | |
58 | |
103 | 59 =head1 NAME |
60 | |
61 C<IMPL::DOM::SimpleNode> - узел с текстом. | |
62 | |
49 | 63 =head1 DESCRIPTION |
64 | |
65 Узел имеющий простое значение. Данный узел может содержать ограничения | |
66 на простое значение. | |
67 | |
103 | 68 Производит валидацию содержимого, при постоении DOM модели не имеет специального |
69 типа и будет создан в виде C<IMPL::DOM::Node>. | |
70 | |
71 Также определяет как будет воссоздано значение узла в DOM модели. | |
49 | 72 |
73 =cut |