public function __construct($values = array())
{
$defaults['twig.options'] = array();
$defaults['twig.directories'] = array();
$defaults['twig.loader'] = function ($meadow) {
// this needs to be lazy or theme switchers and alike explode it
$stylesheet_dir = get_stylesheet_directory();
$template_dir = get_template_directory();
$calculated_dirs = array($stylesheet_dir, $template_dir, plugin_dir_path(__DIR__) . 'twig');
// enables explicit inheritance from parent theme in child
if ($stylesheet_dir !== $template_dir) {
$calculated_dirs[] = dirname($template_dir);
}
$directories = array_unique(array_merge($calculated_dirs, $meadow['twig.directories']));
return new \Twig_Loader_Filesystem($directories);
};
$defaults['twig.undefined_function'] = array(__CLASS__, 'undefined_function');
$defaults['twig.undefined_filter'] = array(__CLASS__, 'undefined_filter');
$defaults['twig.environment'] = function ($meadow) {
$environment = new \Twig_Environment($meadow['twig.loader'], $meadow['twig.options']);
$meadow_extension = new Extension();
$environment->addExtension($meadow_extension);
$environment->registerUndefinedFunctionCallback($meadow['twig.undefined_function']);
$environment->registerUndefinedFilterCallback($meadow['twig.undefined_filter']);
if (defined('WP_DEBUG') && WP_DEBUG) {
$debug_extension = new \Twig_Extension_Debug();
$environment->addExtension($debug_extension);
$environment->enableDebug();
}
return $environment;
};
$defaults['hierarchy'] = function () {
return new Template_Hierarchy();
};
parent::__construct(array_merge($defaults, $values));
}