public function run() { error_reporting(E_ALL & ~E_NOTICE); if (!$this->skippedFiles) { $this->clearTemp(); } $latte = $this->template->getLatte(); /* @var $file SplFileInfo */ foreach ($this->prepareFiles() as $file) { try { echo $file->getPathname() . "\n"; $code = $latte->compile($file->getPathname()); file_put_contents($latte->getCacheFile($file->getPathname()), $code); } catch (RuntimeException $e) { if (substr($e->getMessage(), 0, 30) !== 'Cannot include undefined block') { throw $e; } } catch (CompileException $e) { $find = NULL; if (!preg_match('/Unknown macro \\{(.*)\\}/U', $e->getMessage(), $find)) { throw $e; } $macroName = $find[1]; $this->template->getLatte()->onCompile[] = function (Engine $engine) use($macroName) { $engine->addMacro($macroName, new EmptyMacro()); //goto checkFile; }; $this->skippedFiles[] = $file; } } if ($this->skippedFiles) { $this->run(); } }
/** * Register in base presenter. * When registered it will provide url for assets belonging to * compiler extension class which has implemented IAssetsProvider. * * @param Template $template * @param string $name Name of the macro used in templates. * @param string $extensionClass Compiler extension class */ public function register(Template $template, $name, $extensionClass) { $latte = $template->getLatte(); $template->_echo511_assetlocator = $this->extensionsData; $set = new MacroSet($latte->getCompiler()); $set->addMacro($name, function ($node, $writer) use($extensionClass) { return $writer->write('echo $_echo511_assetlocator->getFilesystem(\'' . $extensionClass . '\')->getUrl(\'' . trim($node->args, '"\'') . '\');'); }); }
public static function prepareTemplate(Template $template) { $texy = new \Texy(); $latte = $template->getLatte(); $latte->addFilter('texy', function ($text) use($texy) { return Html::el('')->setHtml($texy->process($text)); }); $latte->addFilter('time', function ($text) { return date('j.n.Y G:i:s', $text); }); }
/** * @param Latte\Template|\Nette\Bridges\ApplicationLatte\Template|\Nette\Templating\Template $template * @param ITranslator $translator */ private static function overrideTemplateTranslator($template, ITranslator $translator) { if ($template instanceof Latte\Template) { $template->getEngine()->addFilter('translate', array(new TemplateHelpers($translator), 'translate')); } elseif ($template instanceof \Nette\Bridges\ApplicationLatte\Template) { $template->getLatte()->addFilter('translate', array(new TemplateHelpers($translator), 'translate')); } elseif ($template instanceof \Nette\Templating\Template) { $template->registerHelper('translate', array(new TemplateHelpers($translator), 'translate')); } return $translator; }
/** * @param Template $template */ public function templatePrepareFilters($template) { AngularMacro::install($template->getLatte()->getCompiler()); }