Mercurial > pub > Impl
comparison lib/IMPL/DOM/Schema/Label.pm @ 407:c6e90e02dd17 ref20150831
renamed Lib->lib
author | cin |
---|---|
date | Fri, 04 Sep 2015 19:40:23 +0300 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
406:f23fcb19d3c1 | 407:c6e90e02dd17 |
---|---|
1 package IMPL::DOM::Schema::Label; | |
2 use strict; | |
3 use overload | |
4 '""' => 'ToString', | |
5 'bool' => sub { return 1; }, | |
6 'fallback' => 1; | |
7 | |
8 use IMPL::Const qw(:prop); | |
9 use IMPL::Exception(); | |
10 use IMPL::declare { | |
11 require => { | |
12 ArgException => '-IMPL::InvalidArgumentException' | |
13 }, | |
14 base => [ | |
15 'IMPL::Object' => undef | |
16 ], | |
17 props => [ | |
18 _map => PROP_RW, | |
19 _id => PROP_RW | |
20 ] | |
21 }; | |
22 | |
23 sub CTOR { | |
24 my ($this,$map,$id) = @_; | |
25 | |
26 die ArgException->new('map' => 'A strings map is required') | |
27 unless $map; | |
28 die ArgException->new('id' => 'A lable identifier is required') | |
29 unless $id; | |
30 | |
31 $this->_map($map); | |
32 $this->_id($id); | |
33 } | |
34 | |
35 our $AUTOLOAD; | |
36 sub AUTOLOAD { | |
37 my ($this) = @_; | |
38 | |
39 my ($method) = ($AUTOLOAD =~ /(\w+)$/); | |
40 return | |
41 if $method eq 'DESTROY'; | |
42 | |
43 warn $this->_id . ".$method"; | |
44 | |
45 return $this->new($this->_map,$this->_id . ".$method"); | |
46 } | |
47 | |
48 sub ToString { | |
49 my ($this) = @_; | |
50 return $this->_map->GetString($this->_id); | |
51 } | |
52 | |
53 sub Format { | |
54 my ($this,$args) = @_; | |
55 | |
56 return $this->_map->GetString($this->_id,$args); | |
57 } | |
58 | |
59 1; |