Mercurial > pub > Impl
comparison Lib/IMPL/DOM/Schema/Property.pm @ 24:7f00786f8210
Первая рабочая реазизация схемы и навигаторов
| author | Sergey |
|---|---|
| date | Mon, 05 Oct 2009 00:48:49 +0400 |
| parents | fafe56cfcd69 |
| children | 9dd67fa91ee3 |
comparison
equal
deleted
inserted
replaced
| 23:716b287d4795 | 24:7f00786f8210 |
|---|---|
| 11 | 11 |
| 12 BEGIN { | 12 BEGIN { |
| 13 public property RequiredMessage => prop_all; | 13 public property RequiredMessage => prop_all; |
| 14 } | 14 } |
| 15 | 15 |
| 16 our %CTOR = { | 16 our %CTOR = ( |
| 17 'IMPL::DOM::Schema::SimleNode' => sub { | 17 'IMPL::DOM::Schema::SimpleNode' => sub { |
| 18 my %args = @_; | 18 my %args = @_; |
| 19 | 19 |
| 20 $args{maxOccur} = 1; | 20 $args{maxOccur} = 1; |
| 21 $args{minOccur} = delete $args{optional} ? 0 : 1; | 21 $args{minOccur} = delete $args{optional} ? 0 : 1; |
| 22 $args{nodeName} ||= 'Property'; | 22 $args{nodeName} ||= 'Property'; |
| 23 | 23 |
| 24 return %args; | 24 return %args; |
| 25 } | 25 } |
| 26 }; | 26 ); |
| 27 | 27 |
| 28 sub CTOR { | 28 sub CTOR { |
| 29 my ($this,%args) = @_; | 29 my ($this,%args) = @_; |
| 30 | 30 |
| 31 $this->RequiredMessage($args{RequiredMessage} || 'A property %Schema.name% is required'); | 31 $this->RequiredMessage($args{RequiredMessage} || 'A property %Schema.name% is required'); |
| 37 if ($this->minOccur) { | 37 if ($this->minOccur) { |
| 38 my $prop = $this->name; | 38 my $prop = $this->name; |
| 39 my $nodeProp = new IMPL::DOM::Node(nodeName => '::property', nodeValue => $node->$prop() || $node->nodePropety($prop)); | 39 my $nodeProp = new IMPL::DOM::Node(nodeName => '::property', nodeValue => $node->$prop() || $node->nodePropety($prop)); |
| 40 | 40 |
| 41 if (! $nodeProp->nodeValue) { | 41 if (! $nodeProp->nodeValue) { |
| 42 return new IMPL::DOM::Schema::VaidationError( | 42 return new IMPL::DOM::Schema::ValidationError( |
| 43 Message => | 43 Message => |
| 44 ); | 44 ); |
| 45 } | 45 } |
| 46 return $this->SUPER::Validate($nodeProp); | 46 return $this->SUPER::Validate($nodeProp); |
| 47 } else { | 47 } else { |
