Carew\CoreExtension::registerTwig PHP Method

registerTwig() private method

private registerTwig ( Pimple $container )
$container Pimple
    private function registerTwig(\Pimple $container)
    {
        $container['twig.loader'] = $container->share(function ($container) {
            $loader = new Twig_Loader_Filesystem(array());
            foreach ($container['themes'] as $theme) {
                if (is_dir($path = $theme . '/layouts')) {
                    $loader->addPath($path);
                }
            }
            $loader->addPath(__DIR__ . '/Twig/Resources/layouts');
            $loader->addPath(__DIR__ . '/Twig/Resources/layouts', 'default_theme');
            if (isset($container['config']['engine']['theme_base_dir'])) {
                if (!is_string($container['config']['engine']['theme_base_dir'])) {
                    throw new \InvalidArgumentException('The config.engine.theme_base_dir is not a string');
                }
                $loader->addPath(str_replace('%dir%', $container['base_dir'], $container['config']['engine']['theme_base_dir']));
            } else {
                $loader->addPath($container['base_dir']);
            }
            return $loader;
        });
        $container['twig'] = $container->share(function ($container) {
            $twig = new Twig_Environment($container['twig.loader'], array('strict_variables' => true, 'debug' => true, 'base_template_class' => 'Carew\\Twig\\Template'));
            // We will not be able to add new global in Twig 2.0, so we should declare everything now;
            $twig->addGlobal('carew', new Globals($container['config']));
            $twig->addExtension(new \Twig_Extension_Debug());
            $twig->addExtension(new \Twig_Extension_StringLoader());
            // We have to inject the container to avoid a cyclic dependency;
            $twig->addExtension(new CarewExtension($container));
            return $twig;
        });
    }