Mercurial > pub > Impl
annotate Lib/IMPL/Config/Container.pm @ 216:e9fd7ff3f54c
sync
author | sergey |
---|---|
date | Thu, 09 Aug 2012 17:24:07 +0400 |
parents | a705e848dcc7 |
children |
rev | line source |
---|---|
49 | 1 package IMPL::Config::Container; |
2 use strict; | |
3 use warnings; | |
4 | |
165 | 5 use parent qw(IMPL::Config); |
49 | 6 use IMPL::Class::Property; |
196 | 7 use Carp qw(carp); |
49 | 8 |
9 BEGIN { | |
196 | 10 carp "the module is deprecated"; |
11 | |
49 | 12 public property Chidren => prop_all; |
13 } | |
14 | |
15 sub CTOR { | |
16 my ($this,%args) = @_; | |
17 | |
18 $this->Chidren(\%args); | |
19 } | |
20 | |
21 sub save { | |
22 my ($this,$ctx) = @_; | |
23 | |
24 while (my ($key,$value) = each %{$this->Chidren}) { | |
25 $ctx->AddVar($key,$value); | |
26 } | |
27 } | |
28 | |
29 our $AUTOLOAD; | |
30 sub AUTOLOAD { | |
31 my $this = shift; | |
32 | |
33 (my $prop = $AUTOLOAD) =~ s/.*?(\w+)$/$1/; | |
34 | |
35 my $child = $this->Chidren->{$prop}; | |
59
0f3e369553bd
Rewritten property implementation (probably become slower but more flexible)
wizard
parents:
49
diff
changeset
|
36 if (UNIVERSAL::isa($child,'IMPL::Config::Class')) { |
49 | 37 return $child->instance(@_); |
38 } else { | |
39 return $child; | |
40 } | |
41 } | |
42 | |
43 1; |