49
|
1 package IMPL::Config::Container;
|
|
2 use strict;
|
|
3 use warnings;
|
|
4
|
|
5 use base qw(IMPL::Config);
|
|
6 use IMPL::Class::Property;
|
|
7
|
|
8 BEGIN {
|
|
9 public property Chidren => prop_all;
|
|
10 }
|
|
11
|
|
12 sub CTOR {
|
|
13 my ($this,%args) = @_;
|
|
14
|
|
15 $this->Chidren(\%args);
|
|
16 }
|
|
17
|
|
18 sub save {
|
|
19 my ($this,$ctx) = @_;
|
|
20
|
|
21 while (my ($key,$value) = each %{$this->Chidren}) {
|
|
22 $ctx->AddVar($key,$value);
|
|
23 }
|
|
24 }
|
|
25
|
|
26 our $AUTOLOAD;
|
|
27 sub AUTOLOAD {
|
|
28 my $this = shift;
|
|
29
|
|
30 (my $prop = $AUTOLOAD) =~ s/.*?(\w+)$/$1/;
|
|
31
|
|
32 my $child = $this->Chidren->{$prop};
|
|
33 if (ref $child and $child->isa('IMPL::Config::Class')) {
|
|
34 return $child->instance(@_);
|
|
35 } else {
|
|
36 return $child;
|
|
37 }
|
|
38 }
|
|
39
|
|
40 1;
|