view Lib/IMPL/Config/Container.pm @ 193:8e8401c0aea4

sync
author sergey
date Tue, 10 Apr 2012 08:13:22 +0400
parents 76515373dac0
children a705e848dcc7
line wrap: on
line source

package IMPL::Config::Container;
use strict;
use warnings;

use parent qw(IMPL::Config);
use IMPL::Class::Property;

BEGIN {
    public property Chidren => prop_all;
}

sub CTOR {
    my ($this,%args) = @_;
    
    $this->Chidren(\%args);
}

sub save {
    my ($this,$ctx) = @_;
    
    while (my ($key,$value) = each %{$this->Chidren}) {
        $ctx->AddVar($key,$value);
    }
}

our $AUTOLOAD;
sub AUTOLOAD {
    my $this = shift;
    
    (my $prop = $AUTOLOAD) =~ s/.*?(\w+)$/$1/;
    
    my $child = $this->Chidren->{$prop};
    if (UNIVERSAL::isa($child,'IMPL::Config::Class')) {
        return $child->instance(@_);
    } else {
        return $child;
    }
}

1;