comparison Lib/IMPL/DOM/Transform/ObjectToDOM.pm @ 387:4cc6cc370fb2

DOM refactoring
author sergey
date Tue, 11 Feb 2014 01:13:47 +0400
parents f116cd9fe7d9
children 2287c72f303a
comparison
equal deleted inserted replaced
386:4bdf155e5bfe 387:4cc6cc370fb2
61 61
62 sub currentNode { 62 sub currentNode {
63 shift->_navi->Current; 63 shift->_navi->Current;
64 } 64 }
65 65
66 sub inflateNodeValue {
67 shift->_navi->inflateValue(shift);
68 }
69
70 sub TransformHash { 66 sub TransformHash {
71 my ($this,$data) = @_; 67 my ($this,$data) = @_;
72 68
73 die ArgumentException->new(data => 'A HASH reference is required') 69 die ArgumentException->new(data => 'A HASH reference is required')
74 unless ref $data eq 'HASH'; 70 unless ref $data eq 'HASH';
75 71
76 return $this->StoreObject($this->currentNode,$data) 72 return $this->StoreObject($this->currentNode,$data)
77 if !$this->currentNode->schema->isa(ComplexNode); 73 if !$this->currentNode->schemaType->isa(ComplexNode);
78 74
79 KEYLOOP: foreach my $key (keys %$data) { 75 KEYLOOP: foreach my $key (keys %$data) {
80 my $value = $data->{$key}; 76 my $value = $data->{$key};
81 77
82 if (ref $value eq 'ARRAY') { 78 if (ref $value eq 'ARRAY') {
151 } 147 }
152 148
153 return $this->_navi->Current; 149 return $this->_navi->Current;
154 } 150 }
155 151
156 sub buildErrors {
157 my ($this) = @_;
158
159 return $this->_navi->buildErrors;
160 }
161
162 1; 152 1;
163 153
164 __END__ 154 __END__
165 155
166 =pod 156 =pod
189 179
190 my $form = $transform->Transform($data); 180 my $form = $transform->Transform($data);
191 181
192 my @errors; 182 my @errors;
193 183
194 push @errors, $transform->buildErrors;
195 push @errors, $schema->Validate($doc); 184 push @errors, $schema->Validate($doc);
196 185
197 =end code 186 =end code
198 187
199 =head1 DESCRIPTION 188 =head1 DESCRIPTION
261 является простым, а значени которое ему соответсвует является объектом (ссылкой). 250 является простым, а значени которое ему соответсвует является объектом (ссылкой).
262 251
263 По-умолчанию будет выполнено присваивание C<< $node->nodeValue($data) >>, однако 252 По-умолчанию будет выполнено присваивание C<< $node->nodeValue($data) >>, однако
264 это можно заменить, например, на преобразование в строку. 253 это можно заменить, например, на преобразование в строку.
265 254
266 =head2 C<inflateNodeValue($data)>
267
268 Метод который используется для преобразования значений к правильным типам,
269 используя атрибут C<inflator> элемента схемы. Этот метод можно использовать для
270 C<TransformPlain>, однако по-умолчанию он не используется, поскольку
271 предполагается, что входной объект имеет уже преобразованные значения в своих
272 свойствах.
273
274 =cut 255 =cut