view Lib/IMPL/Web/View/TTRegistry.pm @ 304:2ff513227cb4

*TTView: refactoring. Added control registry for the document.
author cin
date Mon, 15 Apr 2013 07:44:50 +0400
parents
children b5d5793f348e
line wrap: on
line source

package IMPL::Web::View::TTRegistry;
use strict;

use IMPL::Const qw(:prop);
use IMPL::declare {
    require => {
        TTFactory => 'IMPL::Web::View::TTFactory'        
    },
    base => [
        'IMPL::Object' => undef
    ],
    props => [
        loader => PROP_RW,
        context => PROP_RW,
        _cache => PROP_RW,
    ]
};

sub Require {
    my ($this,$name) = @_;
    
    if(my $factory = $this->_cache->{$name}) {
        return $factory;
    } else {
        my $template = $this->loader->template($name)
            or die AppException->new("Failed to load a template $name");
         
        $factory = TTFactory->new(
            $template,
            $this->context,
            $name,
            $this
        );
        
        $this->_cache->{$name} = $factory;
        return $factory;
    }
}

1;

__END__