Mercurial > pub > Impl
comparison Lib/IMPL/DOM/Schema/ValidationError.pm @ 236:2904da230022
DOM refactoring
author | sergey |
---|---|
date | Mon, 15 Oct 2012 04:23:01 +0400 |
parents | 6d8092d8ce1b |
children | 6b6d4b2275a1 |
comparison
equal
deleted
inserted
replaced
235:a4d9126edcbb | 236:2904da230022 |
---|---|
10 use IMPL::Class::Property; | 10 use IMPL::Class::Property; |
11 use IMPL::Class::Property::Direct; | 11 use IMPL::Class::Property::Direct; |
12 use IMPL::Resources::Format qw(FormatMessage); | 12 use IMPL::Resources::Format qw(FormatMessage); |
13 | 13 |
14 BEGIN { | 14 BEGIN { |
15 public _direct property Node => prop_get; # target document node (if exists) | 15 public _direct property node => prop_get; # target document node (if exists) |
16 public _direct property Schema => prop_get; # a schema for the target node (if exists) | 16 public _direct property schema => prop_get; # a schema for the target node (if exists) |
17 public _direct property Source => prop_get; # a schema which triggered this error (can be equal to the Schema) | 17 public _direct property source => prop_get; # a schema which triggered this error (can be equal to the Schema) |
18 public _direct property Parent => prop_get; | 18 public _direct property parent => prop_get; |
19 public _direct property Message => prop_get; # displayable message | 19 public _direct property message => prop_get; # displayable message |
20 } | 20 } |
21 | 21 |
22 sub CTOR { | 22 sub CTOR { |
23 my ($this,%args) = @_; | 23 my ($this,%args) = @_; |
24 | 24 |
25 $this->{$Node} = $args{Node}; | 25 $this->{$node} = $args{node}; |
26 $this->{$Schema} = $args{Schema} if $args{Schema}; | 26 $this->{$schema} = $args{schema} if $args{schema}; |
27 $this->{$Source} = $args{Source} if $args{Source}; | 27 $this->{$source} = $args{source} if $args{source}; |
28 if ($args{Parent}) { | 28 if ($args{parent}) { |
29 $this->{$Parent} = $args{Parent}; | 29 $this->{$parent} = $args{parent}; |
30 } elsif ($args{Node}) { | 30 } elsif ($args{node}) { |
31 $this->{$Parent} = $args{Node}->parentNode; | 31 $this->{$parent} = $args{node}->parentNode; |
32 } else { | 32 } else { |
33 die new IMPL::InvalidArgumentException("A 'Parent' or a 'Node' parameter is required"); | 33 die new IMPL::InvalidArgumentException("A 'parent' or a 'node' parameter is required"); |
34 } | 34 } |
35 $this->{$Message} = FormatMessage(delete $args{Message}, \%args) if $args{Message}; | 35 $this->{$message} = FormatMessage(delete $args{message}, \%args) if $args{message}; |
36 } | 36 } |
37 | 37 |
38 sub toString { | 38 sub toString { |
39 (my $this) = @_; | 39 (my $this) = @_; |
40 return $this->Message; | 40 return $this->message; |
41 } | 41 } |
42 | 42 |
43 1; | 43 1; |
44 | 44 |
45 __END__ | 45 __END__ |
56 C<IMPL::DOM::Schema::ValidationError>, каждая из которых описывает одну ошибку | 56 C<IMPL::DOM::Schema::ValidationError>, каждая из которых описывает одну ошибку |
57 в документе. | 57 в документе. |
58 | 58 |
59 С помощью данного объекта осущетсвляется привязка элемента схемы, элемента документа | 59 С помощью данного объекта осущетсвляется привязка элемента схемы, элемента документа |
60 и сообщения о причине возникновения ошибки. | 60 и сообщения о причине возникновения ошибки. |
61 | |
62 Часть ошибок, таких как проверка содержимого на регулярные выражения, привязаны | |
63 непосредственно к элементу. Но есть ошибки которые привязываются к родительскому | |
64 контейнеру, например отсутсвие обязательного элемента. В таком случае ошибка | |
65 содержит свойство C<parent> и по свойству C<source> можно определить элемент | |
66 (например его имя), к которому относится ошибка. | |
61 | 67 |
62 =head1 MEMBERS | 68 =head1 MEMBERS |
63 | 69 |
64 =over | 70 =over |
65 | 71 |