$tmpDir, 'auto_reload' => true )); $twig->addExtension(new CharsetsExtension()); $twig->addExtension(new CoreExtension()); $twig->addExtension(new I18nExtension()); $twig->addExtension(new IndexExtension()); $twig->addExtension(new MessageExtension()); $twig->addExtension(new PartitionExtension()); $twig->addExtension(new PhpFunctionsExtension()); $twig->addExtension(new PluginsExtension()); $twig->addExtension(new RelationExtension()); $twig->addExtension(new SanitizeExtension()); $twig->addExtension(new ServerPrivilegesExtension()); $twig->addExtension(new StorageEngineExtension()); $twig->addExtension(new TableExtension()); $twig->addExtension(new TrackerExtension()); $twig->addExtension(new TransformationsExtension()); $twig->addExtension(new UrlExtension()); $twig->addExtension(new UtilExtension()); $replacements = []; $twigCache = $twig->getCache(false); // iterate over all templates foreach (new \RecursiveIteratorIterator( new \RecursiveDirectoryIterator($tplDir), \RecursiveIteratorIterator::LEAVES_ONLY ) as $file) { // Skip test files if (strpos($file->getPathname(), '/test/') !== false) { continue; } // force compilation if ($file->isFile() && $file->getExtension() === 'twig') { $name = str_replace($tplDir . '/', '', $file->getPathname()); $template = $twig->loadTemplate($name); // Generate line map $cacheFilename = $twigCache->generateKey($name, $twig->getTemplateClass($name)); $template_file = 'templates/' . $name; $cache_file = str_replace($tmpDir, 'twig-templates', $cacheFilename); $replacements[$cache_file] = array($template_file, $template->getDebugInfo()); } } // Store replacements in JSON $handle = fopen($tmpDir . '/replace.json', 'w'); fwrite($handle, json_encode($replacements)); fclose($handle);