Mercurial > pub > Impl
annotate Lib/IMPL/DOM/Schema/SimpleNode.pm @ 119:8114aaa7feba
Json format
author | wizard |
---|---|
date | Mon, 07 Jun 2010 17:43:15 +0400 |
parents | 196bf443b5e1 |
children | e30bdd040fe3 |
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; | |
8 | |
9 BEGIN { | |
10 public _direct property inflator => prop_get; | |
104
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
11 public _direct property messageInflateError => prop_get; |
103 | 12 } |
49 | 13 |
14 our %CTOR = ( | |
15 'IMPL::DOM::Schema::Node' => sub {my %args = @_; $args{nodeName} ||= 'SimpleNode'; %args} | |
103 | 16 ); |
17 | |
18 sub CTOR { | |
19 my ($this,%args) = @_; | |
20 | |
104
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
21 $this->{$inflator} = $args{inflator} if $args{inflator}; |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
22 $this->{$messageInflateError} = $args{messageInflateError} || 'Failed to inflate nodeValue %Node.path%: %Error%'; |
103 | 23 } |
49 | 24 |
25 sub Validate { | |
104
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
26 my ($this,$node,$ctx) = @_; |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
27 |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
28 my @result; |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
29 |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
30 push @result, $_->Validate($node,$ctx) foreach $this->childNodes; |
49 | 31 |
104
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
32 return @result; |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
33 } |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
34 |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
35 sub inflateValue { |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
36 my ($this,$value) = @_; |
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 if ( my $inflator = $this->inflator ) { |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
39 return $inflator->new($value); |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
40 } else { |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
41 return $value; |
196bf443b5e1
DOM::Schema RC0 inflators support, validation and some other things,
wizard
parents:
103
diff
changeset
|
42 } |
49 | 43 } |
44 | |
45 1; | |
46 | |
47 __END__ | |
48 | |
49 =pod | |
50 | |
103 | 51 =head1 NAME |
52 | |
53 C<IMPL::DOM::SimpleNode> - узел с текстом. | |
54 | |
49 | 55 =head1 DESCRIPTION |
56 | |
57 Узел имеющий простое значение. Данный узел может содержать ограничения | |
58 на простое значение. | |
59 | |
103 | 60 Производит валидацию содержимого, при постоении DOM модели не имеет специального |
61 типа и будет создан в виде C<IMPL::DOM::Node>. | |
62 | |
63 Также определяет как будет воссоздано значение узла в DOM модели. | |
49 | 64 |
65 =cut |